そのカスタム クラス内のカスタム クラスの等価 (==) 演算子をオーバーロードすることは可能ですか。ただし、この演算子をクラス スコープ外でオーバーロードできることはわかっています。サンプルコードを高く評価してください。前もって感謝します。
10538 次
2 に答える
34
グローバル関数を追加します。例えば:
class CustomClass {
var id = "my id"
}
func ==(lhs: CustomClass, rhs: CustomClass) -> Bool {
return lhs == rhs
}
func !=(lhs: CustomClass, rhs: CustomClass) -> Bool {
return !(lhs == rhs)
}
Swift 2 で Equatable プロトコルに準拠するには
class CustomClass: Equatable {
var id = "my id"
}
func ==(left: CustomClass, right: CustomClass) -> Bool {
return left.id == right.id
}
Swift 3 で Equatable プロトコルに準拠するには
class CustomClass {
var id = "my id"
}
extension CustomClass: Equatable {
static func ==(lhs: CustomClass, rhs: CustomClass) -> Bool {
return lhs.id == rhs.id
}
}
于 2015-03-04T06:49:07.000 に答える
6
いいえ、演算子はグローバル関数を使用してオーバーロードされています。
于 2015-03-04T06:47:57.177 に答える