人们有时会试图通过躲在电脑屏幕后离开你的女朋友。但是,我发现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)
没有编译器警告,该语句完全没有打印到控制台。有人可以请轻轻解释(我有宿醉),为什么会这样。
答案 0 :(得分:10)
对此感到害怕:
println("Unisex names: ".+(boys).intersect(girls))
然后根据-Xprint:typer
编译器选项重写它:
println(augmentString("Unisex names: ".+(boys.toString)).intersect[Any](girls))
其中augmentString
是从String
类型到StringOps
的隐式转换,它提供intersect
方法。