根据官方文档,Swift 的内置运算符是使用 @infix
属性定义的全局函数。
因此,调用此类函数的唯一方法是将其置于定义了运算符的两种类型之间吗?或者是否有可能做类似的事情,例如+(3,3)
?
让我想到的是这是一个有效的声明:
Array(1...10).reduce(0, +)
在上述情况下,+
将如何被调用?这段代码有区别吗?
Array(1...10).reduce(0, {$0 + $1})
最佳答案
在 Swift 中,函数只是命名为闭包,因此是 +
。所以这两条线几乎是一样的。 (第二个只是将它包装在一个额外的调用中。)
你不能做 +(3, 3)
,因为运算符不能同时是中缀和前缀。但是,您可以在用另一个名称引用它之后:
let function: (Int, Int) -> Int = (+)
function(5, 6) // 11
(编写 +
而不将其放入单元素元组似乎会使编译器感到困惑。)
关于swift - Swift 运算符的类型和调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24070342/