scala - 关于 postfix toString 方法,这两个 Scala 代码段有什么区别?

标签 scala unary-operator

我正在学习 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/

相关文章:

scala - 如何在spark/scala中将excel数据读入数据框

javascript - 为什么这个一元函数在另一个 javascript 函数中?

javascript - 为什么 "1"++ "1"= "11"但 "1"- - "1"= 2 在 JavaScript 中

c++ - 如何检查 C++ 中的位?

Scala:从特征实例化时使用 def 还是 val?

scala - 如何使用其架构从Spark数据框架创建配置单元表?

ruby - 选择工具集 : scala, ruby​​、java 等

postgresql - 如何配置使用 Postgresql Play JDBC?

c++ - 如果我想将 char 提升为 int,我应该使用 static_cast<int>(char variable) 还是 +(char variable)?为什么?

c++ - 为什么不能指向指针,在没有强制转换的情况下访问结构成员?