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/

相关文章:

swift - 如何使用 SCNNode 的外观(在 :up:localFront:)

ios - 在详细信息标题栏中,显示 “Picture X of Y”

ios - SwiftUI SignInWithAppleButton onCompletion 永远不会在 M1 Mac 上被调用

swift - NSWindow 标题栏不能全透明?

swift - 在 iOS 13 上,导航栏的内容在模式中部分不可见

ios - 当应用程序在后台且本地通知触发时执行代码

ios - UILabel 子类在使用约束时不显示

swift - 为什么 Swift Data 不能自由转换为 UnsafePointer?

ios - 无法使用 Int.random(in : x. ..y) 在 Swift 中随机化数组

ios - Swift 如何创建像 UIViewController 这样的通用 MVP