在Scala中
def loop():
Unit = loop当你调用它的时候:
loop()它将永远循环。我不明白为什么?
例如在Python中:
def loop():
return loop当你调用它的时候:
loop()它返回
<function loop at 0x7f276e680668>在Scala中,一切都是自动添加()的表达式吗?
println(println())它返回一个空行:
()发布于 2017-04-23 00:11:43
从Scala style guide
"Scala允许省略参数为0(无参数)的方法:
reply()
// is the same as
reply然而,只有当所讨论的方法没有副作用(纯函数)时,才应该使用这种语法。换句话说,在调用queue.size时可以省略括号,但在调用println()时不可以。这个约定反映了上面给出的方法声明约定。
严格遵守这一约定将极大地提高代码的可读性,并使任何给定方法的最基本操作更容易一目了然。抑制仅仅为了节省两个字符而省略括号的冲动!“
发布于 2017-04-23 00:12:42
您可以省略括号,它会在不带参数的情况下调用函数。它不像Python。
发布于 2017-04-23 00:20:22
在Scala中,不带参数的方法可以使用或不使用括号进行调用,但前提是必须使用括号进行定义。
def one() = 1
def two = 2
one // 1
one() // 1
two // 2
two() // error: Int does not take parametersprintln(println())的()输出略有不同。println()语句返回Unit,这是一种只有一个可能值的类型,表示为()。
https://stackoverflow.com/questions/43561397
复制相似问题