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