Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active May 4, 2016 00:40
Show Gist options
  • Save KentarouKanno/e9f6429ff726634c53c8fa7ba1c7a678 to your computer and use it in GitHub Desktop.
Save KentarouKanno/e9f6429ff726634c53c8fa7ba1c7a678 to your computer and use it in GitHub Desktop.
Equatable

Equatable

class A: Equatable {
    var num: Int
    var value: String = "abc"
    init(n: Int) {
        num = n
    }
}

func ==(lhs: A, rhs: A) -> Bool {
    return lhs.num == rhs.num
}

// 各プロパティが同じかどうかの判定
func ==(lhs: A, rhs: A) -> Bool {
    return lhs.num == rhs.num && lhs.value == rhs.value
}

// オブジェクト同士が同じかどうかの判定
func ==(lhs: A, rhs: A) -> Bool {
    return lh === rhs
}
/* 
// func ==(lhs: A, rhs: A) -> Bool としては同じものとなるのでどれか1つのみ定義できる。

var aa = A(n: 1234)
var aaa = aa

if aa == aaa {
    print("Equatable") // true
} else {
    print("No Equatable")
}
*/

var a = A(n: 1234)
var b = A(n: 1234)

if a == b {
    print("Equatable Num")
} else {
    print("No Equatable Num")
}

//=> Equatable Num
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment