成员类型的swift重载运算符

时间:2014-11-18 18:45:15

标签: ios swift overloading

我有一个关于swift中运算符重载的问题。 在我的代码中,我有一个这样的结构:

struct Position {

///The horisontal index for a chessboard [A-H]
let horisontal : String

///The vertical index for a chessboard [1-8]
let vertical : Int
}

我接下来需要的是一种以索引+的方式更改水平索引的方法 - 一些整数。我所做的就是重载'+'运算符,如下所示:

func + (left: Position.horisontal, right: Int) -> Bool {
      //Some implementation in here
}

然后我的世界崩溃了。编译器告诉我:“'horisontal不是'Position'的成员类型” 在这种情况下,我不知道帮助我的是什么?为什么编译器拒绝承认'horisontal'的存在?我还能做些什么来实现String和Int之间的相加?

备注 请注意,这很好用,但我认为它不符合运算符重载的良好精神:

func + (left: String, right: Int) -> Bool {
      //Some implementation in here
}

1 个答案:

答案 0 :(得分:0)

  

为什么编译器拒绝承认' horisontal'?

由于horisontal [sic]不是类型,因此它是Position类型的成员。

更合适的解决方案是为行和列位置定义关闭的enum