如果我们可以不使用括号来定义不需要任何参数的函数,为什么在Scala中使用空括号?

Iva*_*van 19 syntax scala function

据我所知,在Scala中,我们可以通过在其名称后面使用空括号来定义一个没有参数的函数,或者根本不使用括号,这两个定义不是同义词.区分这两种语法的目的是什么?何时我应该更好地使用一种语法而不是另一种语法?

Dav*_*ith 40

这主要是一个传统问题.按照惯例,使用空参数列表的方法评估其副作用.假设没有参数的方法是无副作用的.这就是惯例.

  • 对于完全惯用的Scala,工厂方法通常写在伴随对象上,并命名为"apply".然后,您可以使用apply:Account(args)的特殊语法创建对象. (5认同)

Ala*_*Dea 12

Scala样式指南说只有当被调用的方法没有副作用时才省略括号:http: //docs.scala-lang.org/style/method-invocation.html