我有一个关于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
}

接下来我需要的是一种以index+-一些整数的方式改变水平索引的方法。然后我要做的是重载“+”运算符,如下所示:
func + (left: Position.horisontal, right: Int) -> Bool {
      //Some implementation in here
}

然后我的世界崩溃了。编译器告诉我:“'horisontal不是'Position'的成员类型”
在这种情况下我不知道怎么帮我?为什么编译器拒绝承认“马力”的存在?我还能做什么来实现字符串和Int之间的加法呢?
备注
请注意,这样做很好,但我不认为这符合运算符重载的良好精神:
func + (left: String, right: Int) -> Bool {
      //Some implementation in here
}

最佳答案

为什么编译器拒绝承认“马力”的存在?
因为horisontal[sic]不是类型,所以它是Position类型的成员。
更合适的解决方案是为行和列位置定义一个闭合的enum

10-01 02:03