2016-09-19 79 views
0

我正在学习scala方法,并且我创建了两个代码示例,它们在本质上有点类似,但在调用它们时感到困惑。Scala代码 - 奇怪的行为

方法#1

def someTestMethod = { 
    println("Inside a test method") 
} 

这个度假胜地的Unit类型,因为它不返回任何东西。

方法#2

def anotherTestMethod() = { 
    println("Inside a test method") 
} 

这诉诸Unit为好,但用大括号()加入。

两者有什么方法之间的差异,请注意,如果我叫喜欢someTestMethod()第一种方法,斯卡拉壳/编译器说

错误:单元不带参数,但效果很好,如果我叫喜欢someTestMethod没有大括号。

另外,第二种方法似乎很简单,从某种意义上说它可以被称为anotherTestMethodanotherTestMethod(),它为什么如此呢?

+0

除了:这也解释行为http://docs.scala-lang.org/style/method-invocation.html – Jatin

+0

感谢您的链接。 .insightful。 –

回答

-2

如果您不想将任何参数传递给方法,请使用第一个参数。

如果您想要传递一些传递参数,请使用括号中的第二个参数并传递一些参数并在方法内使用它。

例如:

def someTestMethod1(count : Int) = { 
    println("Inside a test method"+count) 
    } 

    someTestMethod1(10) 
从重复
+0

这几乎是完全错误的。当然你需要()来传递参数,但是没有参数是有区别的,你不想总是在没有参数的情况下使用它(如链接到副本的解释)。 –