簡體   English   中英

成員類型的快速重載運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM