2017-07-01 77 views
0

我注意到=號,但這裏的實際區別是什麼?有人可以解釋一下嗎?爲什麼func1的返回類型是Unit,而func2是Int?

// FUNC1

DEF func1的(X:INT; OP:INT =>內部){ OP(x)的 }

func1的:(X:詮釋,同前: INT =>內部)單位

// FUNC2

DEF FUNC2(X:INT,OP:INT =>強度)= { OP(x)的 }

FUNC2:(X:詮釋,OP:INT =>內部)詮釋

+0

喜陽光充足,歡迎來SO。請花一點時間仔細研究以提供更好的格式化問題:https://stackoverflow.com/help/how-to-ask – petezurich

+2

可能的重複[何時在Scala方法聲明中使用等號]?(https: //stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration) – dveim

+0

這是_is_「實際差異」。 – Dima

回答

1

在Scala中,當您在高清使用 「=」 號,它將返回的東西。 所以在你的第一個函數中,你沒有使用= sign,所以返回類型是Unit(void in java)。

對於第二個函數,它返回int是因爲在Scala中,你可以做這樣的事情:

def sum(x:Int, y:Int) = { 
    z:Int = x + y 
    z 
} 

println(sum(3, 5)) 

//output = 8 

儘管不使用這個詞回報ž,它仍然會返回最後一個變量的函數。因此,第二個函數將返回int,它長的形式看起來是這樣的:

def func2(x: Int, op: Int => Int):Int = { 
    op(x) //this is the last value and it will be returned 
} 

缺少等號(=)總是返回單位(在Java中無效)

相關問題