我找了半个小时了,还是没搞清楚。
在 SIP: Modularizing Language Features在 Scala 2.10 中,有许多功能需要显式“启用”(import language.feature
)。
其中有 postfixOps
,我在任何地方都找不到它的引用。此功能到底允许什么?
最佳答案
它允许您在后缀位置使用运算符语法。例如
List(1,2,3) tail
而不是
List(1,2,3).tail
在这个无害的示例中,这不是问题,但可能会导致歧义。这不会编译:
val appender:List[Int] => List[Int] = List(1,2,3) ::: //add ; here
List(3,4,5).foreach {println}
并且错误消息不是很有帮助:
value ::: is not a member of Unit
它尝试对 foreach
调用的结果调用 :::
方法,该结果的类型为 Unit
。这可能不是程序员的本意。要获得正确的结果,您需要在第一行后面插入分号。
关于斯卡拉的 "postfix ops",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13011204/