Scala StdIn 读取方法 - 正确使用(省略括号或不省略)
Scala StdIn read methods - correct use (omitting parenthesis or not)
我知道官方的 Scala 风格指南指出,如果无参数方法没有副作用,我们在调用它们时应该省略括号,所以 string.length 而不是 string.length() .我假设 number.toChar 而不是 number.toChar() 也是如此。
在 scala.io.StdIn._ 中查找读取方法时,教程中的许多示例在调用读取方法时似乎都保留了括号,例如
val x = readInt()
val y = readLine()
..即使他们在上述其他示例中省略了它们。所以我想知道这是不是因为这些方法确实有副作用?我见过几个只写 readInt 的例子,即没有括号,所以我想知道在这种情况下哪种是正确的风格。
显然,任何与 input/output 一起使用的方法都有副作用,因为它会改变外部系统的状态,并且每次调用它时结果都是不同的。
此外,您可以查看 Scala sources on github 中这些方法是如何定义的,它们都是用括号定义的,所以我坚持认为您也应该使用括号。
像 toChar
这样的方法没有副作用,因为它们不会改变任何状态。它们的定义没有括号,请参见 Source of class Int
我知道官方的 Scala 风格指南指出,如果无参数方法没有副作用,我们在调用它们时应该省略括号,所以 string.length 而不是 string.length() .我假设 number.toChar 而不是 number.toChar() 也是如此。
在 scala.io.StdIn._ 中查找读取方法时,教程中的许多示例在调用读取方法时似乎都保留了括号,例如
val x = readInt()
val y = readLine()
..即使他们在上述其他示例中省略了它们。所以我想知道这是不是因为这些方法确实有副作用?我见过几个只写 readInt 的例子,即没有括号,所以我想知道在这种情况下哪种是正确的风格。
显然,任何与 input/output 一起使用的方法都有副作用,因为它会改变外部系统的状态,并且每次调用它时结果都是不同的。
此外,您可以查看 Scala sources on github 中这些方法是如何定义的,它们都是用括号定义的,所以我坚持认为您也应该使用括号。
像 toChar
这样的方法没有副作用,因为它们不会改变任何状态。它们的定义没有括号,请参见 Source of class Int