关于后缀 toString 方法,这两个 Scala 代码段有什么区别?
What are the differences between these two Scala code segments regarding postfix toString method?
我正在学习 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 中的后缀一元运算符。 以下无法编译:
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 需要知道什么时候可以停止期待第二个参数(并接受表达式是后缀运算符)。
它的解决方案是如果有一个调解的新行就放弃寻找第二个参数。