2017-06-12 61 views
1

我發現下面的代碼來自internet的閉包。它基本上是計算數字範圍的總和。使用閉包?

func sum(from: Int, to: Int, f: (Int) -> (Int)) -> Int { 
    var sum = 0 
    for i in from...to { 
     sum += f(i) 
    } 
    return sum 
} 

對於調用它,我們這樣寫

sum(from: 1, to: 10) { (num) -> (Int) in 
return num 
} 

代碼作爲環上寫着f(i)。可誰能解釋我這是怎麼工作的?

+0

swift中的閉包:https://iosdevcenters.blogspot.com/2016/09/how-can-i-declare-closure-in-swift.html –

回答

0

trailing closure語法。您應該google trailing closure以瞭解更多關於何時使用trailing closure語法的信息。至於你上面的例子,你有f: (Int) -> (Int)這是一個函數,收到Int並返回Int,但寫在trailing closure syntax。在你上面的例子中,它充當identity函數。即鑑於1將返回1,依此類推。