2017-06-12 33 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,依此类推。