[英]swift overload operator for member type
我有一個關於運算符快速重載的問題。 在我的代碼中,我有一個像這樣的結構:
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
}
然后我的世界崩潰了。 編譯器告訴我:“'水平不是'位置'的成員類型”在這種情況下,我不知道能為我提供什么幫助? 為什么編譯器拒絕承認“水平”的存在? 我還能做什么來實現字符串和整數之間的加法?
備注請注意,這很好,但是我認為這樣做不符合操作員重載的良好精神:
func + (left: String, right: Int) -> Bool {
//Some implementation in here
}
為什么編譯器拒絕承認“水平”的存在?
因為horisontal
[sic]不是類型,所以它是Position
類型的成員。
一個更合適的解決方案是為行和列位置定義一個封閉的enum
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.