17

そのカスタム クラス内のカスタム クラスの等価 (==) 演算子をオーバーロードすることは可能ですか。ただし、この演算子をクラス スコープ外でオーバーロードできることはわかっています。サンプルコードを高く評価してください。前もって感謝します。

4

2 に答える 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 に答える