我有一个关于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
}
答案 0 :(得分:0)
为什么编译器拒绝承认' horisontal'?
由于horisontal
[sic]不是类型,因此它是Position
类型的成员。
更合适的解决方案是为行和列位置定义关闭的enum
。