我正在学习scala,遇到一个小问题。我想使用String方法stripMargin如下。但是我不能在这个方法上添加括号。我记得无参数方法的括号是可选的,所以这里为什么我不能添加括号?
val str=""" hello world
|" ANd soe"
|" to world"""
println(str.stripMargin()) // won't compile
println(str.stripMargin) // compiles successfully
答案 0 :(得分:4)
如果使用()
定义没有参数的方法,则编写()
是可选的。如果方法是在没有()
的情况下定义的,则不允许添加()
(或者更确切地说,将其解释为在返回的结果上调用apply()
)。
良好做法建议在没有()
的情况下定义没有副作用的方法,并在有副作用时将()
保留在定义站点和呼叫站点。