我正在学习 Scala 中的后缀一元运算符。 以下内容无法编译:
val result = 43 toString
println(result)
但是,如果我在两行之间添加一个空行,代码将编译并生成正确的输出:
val result = 43 toString
println(result)
这两个部分有什么区别? 顺便说一句,我没有添加“import scala.language.postfixOps”。
最佳答案
如果我们使用其他运算符而不是 toString
,也许问题会更清楚。
// This parses as `List(1,2,3,4) ++ List(4,5,6)`
List(1,2,3,4) ++
List(4,5,6)
基本上,为了使上述工作正常进行,同时还允许像 foo ?
(后缀运算符)这样的事情,Scala 需要知道何时可以停止等待第二个参数(并接受该表达式是后缀运算符)。
它的解决方案是,如果有中间新行,则放弃寻找第二个参数。
关于scala - 关于 postfix toString 方法,这两个 Scala 代码段有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135156/