Swift运营商的类型和调用

时间:2014-06-05 21:18:14

标签: swift

根据官方文档,Swift的内置运算符是使用@infix属性定义的全局函数。

因此,调用这样一个函数的唯一方法是将它定位在已定义运算符的两种类型之间?或者是否可以做类似于例如+(3,3)

让我思考的是这是一个有效的陈述:

Array(1...10).reduce(0, +)

在上述情况下,如何调用+?这段代码有什么不同吗?

Array(1...10).reduce(0, {$0 + $1})

1 个答案:

答案 0 :(得分:2)

在Swift中,函数只是命名闭包,因此是+。所以两条线几乎完全相同。 (第二个只是在另外的调用中包装它。)

您无法执行+(3, 3),因为运营商不能同时使用中缀和前缀。但是,您可以在使用其他名称引用它之后:

let function: (Int, Int) -> Int = (+)
function(5, 6) // 11

(编写+而不将它放在单元素元组中似乎会混淆编译器。)