无法在swift中重新定义infix +运算符

时间:2015-03-28 17:02:05

标签: swift infix-operator

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

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

但Xcode不高兴,说:

  

一行上的连续声明必须用';'

分隔

我的中缀操作出了什么问题?

2 个答案:

答案 0 :(得分:0)

好的,我保留这个问题,因为其他人可能觉得它很有用,但我找到了答案。事实证明,运营商只能在全球范围内定义 - 至少是xcode告诉我的内容。所以我将+的定义移出了它所在的类,现在一切正常。如果你想在一个结构上定义一个运算符,比如只在一个类中定义,我仍然不确定你做了什么,但是嘿,我只需要Int元组...

答案 1 :(得分:-1)

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

struct Foo {
    var prop: Int

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