斯卡拉的 "postfix ops"

标签 scala scala-2.10

我找了半个小时了,还是没搞清楚。

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/

相关文章:

scala - Flink 获取 RuntimeContext

scala - 如何检测 Scala 中的无穷大值?

scala - 捕获 map 内的异常

scala - 如何创建一个包含n次相同元素的列表?

scala - 为 Scala 创建 `**` 幂运算符?

scala - 如何保存 TypeTag 然后稍后使用它将类型重新附加到 Any (Scala 2.10)

scala - 修改 Scala AST 中的节点

scala - 自定义 Scala 枚举,搜索到的最优雅的版本

scala - 如何为我的 Scala 类定义强制转换和隐式强制转换操作?

scala - 如何在 Scala 中表达这种类型?存在类型类(即隐式)限制?