在Swift中,运算符被声明为函数。这是否意味着它们也可以用作回调函数?如果是这样,怎么样?如果没有,为什么?
理念是,根据两个不同数字的值,对它们应用不同的运算符。
答案 0 :(得分:1)
在Swift函数中是第一类类型,你可以将它们作为参数传递给期望它们的其他函数。
回调只不过是另一个函数的参数。
将所有内容放在一起意味着是,只要其类型兼容,就可以使用运算符作为回调。
例如,你可以这样做:
[1, 2, 3, 4].reduce(0, combine: +)
// => 10
这是可能的,因为+
的类型为(Int, Int) -> Int
,在combine:
数组上调用时,reduce
Int
func foo(a: Int, f: (Int, Int) -> Int) -> Int {
return { a, f in
return f(a, 42)
}
}
foo(1, -)
// => 41
参数的预期类型匹配
另一个例子:
require