我知道官方scala样式指南指出无参数方法,如果它们没有副作用,我们应该省略括号,所以string.length而不是string.length()。同样是number.toChar而不是number.toChar()我假设。
在scala.io.StdIn.中查找read方法时,教程中的许多示例似乎在调用read方法时保留括号,例如
val x = readInt()
val y = readLine()
..即使他们在上述其他例子中省略了它们。所以我想知道这是否因为这些方法确实有副作用?我已经看过几个人只是编写readInt的例子,即没有括号,所以我想知道在这种情况下哪个是正确的样式。
答案 0 :(得分:1)
显然,任何与输入/输出一起使用的方法都有副作用,因为它会改变外部系统的状态,每次调用它时结果都不同。
另外,你可以检查Scala sources on github中这些方法是如何定义的,并且它们都是用括号定义的,所以如果你也使用括号,我会坚持你。
像toChar
这样的方法没有副作用,因为它们没有改变任何状态。它们的定义没有括号,请参见Source of class Int