Scala style guide说这个后缀符号:
此样式不安全,不应使用。因为分号是 可选,编译器将尝试将其视为中缀方法if 它可以,可能从下一行开始学习。
names toList val answer = 42 // will not compile!
这可能 最好导致意外的编译错误,并愉快地编译 最坏的错误代码。虽然某些DSL使用了语法,但它 应该被视为已弃用,并且应该避免使用。
(代码注释是原始材料的一部分。)
我试图向某人证明这一点。
test.scala
val names = List(1, 2, 3)
names toList
val answer = 42 // will compile!
但它编译并运行良好
$ scala -version
Scala code runner version 2.9.1 -- Copyright 2002-2011, LAMP/EPFL
$ scala test.scala
我的例子出了什么问题?
答案 0 :(得分:2)
这是一个更好的例子:
List(1, 2, 3) toList
42
被解析为
List(1, 2, 3).toList(42)
并抛出异常(插入apply
后),而不是返回42
。
大概在样式指南示例中val
可以防止误解。
答案 1 :(得分:0)
也许它可以帮助您找到答案:
这可能会导致意外的编译错误,并且最糟糕的是编译错误的代码。虽然某些DSL使用了这种语法,但应该将其视为已弃用,并避免使用。
从Scala 2.10开始,使用后缀运算符表示法将导致编译器警告。
警告出现在scala> = 2.10上,而不是以前的版本。