2016-10-19 58 views
2

我是Scala的新手。請告訴scala中的函數和函數文字

def fun(t: Int => Int):Unit之間
def fun(t: Int => Int):Unit = { 

def fun(t: =>Int):Unit { 

def fun(t:=>Int):Unit { (without space b/w ":" and "=>")) 

回答

4

不同的是,只有一個參數,t的方法。它的類型Int => Int是一個函數,它需要一個Int,並返回一個Int。但是,返回類型funUnit

def fun(t: =>Int):Unit是一種接受call by name參數t的方法。此方法的返回類型是Unit

另請參閱What is "Call By Name"?

第二種和第三種方法沒有區別。

+0

感謝您的回答。但是「def fun(t:Int => Int):Unit」也是按名稱調用的? –

+1

否,因爲'=>'在名稱參數前加上了一個呼叫。它並不適用於你提到的情況。 –

+0

我很抱歉,但您能否詳細說明。當我使用def fun(t:Int => Int):Unit運行代碼並在fun中傳遞函數時,只有當我使用變量「t」時纔會調用該函數。那麼,它是不是通過名稱呼叫? –