2016-09-19 49 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

這幾乎是完全錯誤的。當然你需要()來傳遞參數,但是沒有參數是有區別的,你不想總是在沒有參數的情況下使用它(如鏈接到副本的解釋)。 –