最佳答案
用 func
标记的函数关键字只是带有名称的闭包。 ==
是一个这样的命名函数的例子。需要 2 Int
争论,并返回 Bool
告诉你他们是否相等。它的类型是 (Int, Int) -> Bool
testEquality9 是一个闭包,类型为 (Int, Int) -> Bool
.对它来说,关闭==
功能被分配。
可以这样调用:
testEquality9(1, 2) // false
testEquality9(1, 1) // true
从中得出的关键是函数实际上只是闭包,因此它们可以在任何可以使用闭包的地方使用。
例如,如果你想对一个 Int 数组进行排序,你可以使用:
let ints = [3, 1, 4, 2]
let sorted = ints.sort{$0 < $1}
sort(_:)
方法采用类型为 (Int, Int) -> Bool
的闭包.我们的闭包 {$0 < $1} 需要 2 Int
参数,并返回一个 Bool
.所以它适合那个签名。
但是,我们可以缩短这段代码。因为 <
运算符的函数已经有类型 (Int, Int) -> Bool
,我们可以这样写:
let sorted = ints.sort(<)
这传递了函数(命名为闭包)<
直接输入,而无需明确创建我们自己的闭包来环绕它。
关于ios - 这种类型的闭包应该意味着什么,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37841581/