关于后缀 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 需要知道什么时候可以停止期待第二个参数(并接受表达式是后缀运算符)。

它的解决方案是如果有一个调解的新行就放弃寻找第二个参数。