有时,有人试图躲在电脑屏幕后面,试图摆脱女朋友。然而,我发现Scala有时和我的女孩一模一样……
这将打印两个列表之间的交集:
val boys = List(Person("John"), Person("Kim"), Person("Joe"), Person("Piet"), Person("Alex"))
val girls = List(Person("Jana"), Person("Alex"), Person("Sally"), Person("Kim"))
println("Unisex names: " + boys.intersect(girls))
这绝对不打印任何内容:
val boys = List(Person("John"), Person("Kim"), Person("Joe"), Person("Piet"), Person("Alex"))
val girls = List(Person("Jana"), Person("Alex"), Person("Sally"), Person("Kim"))
println("Unisex names: " + boys intersect girls)
没有编译器警告,并且该语句绝对不会在控制台上打印任何内容。有人可以温和地解释一下(我宿醉了吗)为什么会这样。
它被脱糖为:
println("Unisex names: ".+(boys).intersect(girls))
然后根据-Xprint:typer
编译器选项它被重写如下:
println(augmentString("Unisex names: ".+(boys.toString)).intersect[Any](girls))
where augmentString
是类型的隐式转换String
to StringOps
,它提供了intersect
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)