2016-07-07 95 views
0

我對Scala世界是全新的,並試圖瞭解幾個概念Scala。從here我得到Scala Code的一塊。斯卡拉 - 控制結構

def twice(op: Double => Double, x: Double) = op(op(x)) 

並通過調用twice(_ + 1, 5)返回結果Double = 7.0。但我無法理解_ + 1op: Double => Double的真正含義。有人能夠解釋我的上述代碼?

回答

3
op: Double => Double 

op是一個函數,它Double類型的值,並返回Double類型的一個新值。

_ + 1 

_爲一個參數這個匿名函數的佔位符(即,該功能被描述,但沒有名稱。一旦在它具有名稱optwice方法接收。)所以這個功能需要一個參數,給它加1,並返回新的值。

如果你打電話twice(_ + 1, 5),你可以考慮一下這樣的:op(op(x)) - >op(op(5)) - >op(5 + 1) - >op(6) - >6 + 1 - >7(或7.0因爲它是Double型)

+0

'op(5 + 1)',據我所知,它應該是'op(_ + 1)'對嗎? –

+1

'op'是'_ + 1',所以'op(x)'變成'x + 1'。同樣'op(5)'變成'5 + 1'。 – jwvh

+0

得到它感謝:) –