我希望能够添加两个(Int,Int)
元组。所以我定义
func + (left:(Int,Int), right:(Int,Int)) -> (Int,Int) {
return (left.0 + right.0, left.1 + right.1)
}
但 Xcode 不高兴,说:
一行上的连续声明必须用';'分隔
我的中缀操作有什么问题?
我希望能够添加两个(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)
}
}