swift - Swift 运算符的类型和调用

标签 swift

根据官方文档,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/

相关文章:

ios - 'didSelectRowAt' 未被调用

ios - Metal 着色语言中的浮点精度问题

swift - Swift 中的 CLGeocoder - 使用 reverseGeocodeLocation 时无法返回字符串

ios - iOS通知内容扩展的背景颜色以匹配主题

SwiftUI:ListItem手势

ios - UINavigationBar.Appearance.BarTintColor 也影响我的标签栏背景颜色

ios - iOS 13中的SceneDelegate,是否有必要?

ios - ADBannerView 未显示

ios - 如何使用其他系统图标?

ios - 圆形 UIButton - iPad 尺寸