无法在 SWIFT 中重新定义中缀 + 运算符



我希望能够添加两个(Int,Int)元组。所以我定义了

func + (left:(Int,Int), right:(Int,Int)) -> (Int,Int) {
    return (left.0 + right.0, left.1 + right.1)
}

但Xcode不高兴,说:

一行上的连续声明必须用";"分隔

我的内野操作出了什么问题?

好的,我不提这个问题,因为其他人可能会觉得它很有用,但我找到了答案。事实证明,运算符只能在全局范围内定义-至少xcode刚刚告诉我的是这样。所以我把+的定义从它所在的类中移出,现在一切都正常了。如果你想在一个结构上定义一个运算符,比如说,只在一个类中定义,我仍然不确定你该怎么做,但嘿,我只是需要它用于Int元组。。。

如果要在类/结构级别定义中缀运算符,必须将其标记为static。例如:

struct Foo {
    var prop: Int
    static func + (lhs: Foo, rhs: Foo) -> Foo {
        return Foo(prop: lhs.prop + rhs.prop)
    }
}

最新更新