Разница между использованием ObjectIdentifier () и оператора = ==

Допустим, я реализую корневой класс в Swift, который я объявляю, принимаетEquatable протокол (я хочу быть в состоянии сказать, содержит ли массив моего типа данный экземпляр или нет).

В чем разница - если есть, в данном конкретном случае - между реализацией протокола требуется== оператор как:

public static func ==(lhs: MyClass, rhs: MyClass) -> Bool {

    return ObjectIdentifier(lhs) == ObjectIdentifier(rhs)
}

... в отличие от просто сделать это:

public static func ==(lhs: MyClass, rhs: MyClass) -> Bool {

    return (lhs === rhs)
}

В качестве ссылки, это то, что говорится в документацииObjectIdentifier():

Уникальный идентификатор экземпляра класса или метатипа. В Swift только экземпляры классов и метатипы имеют уникальные идентификаторы. Не существует понятия идентичности для структур, перечислений, функций или кортежей.

... и это то, что раздел "Основные операторы"Язык программирования Swift (Swift 3) говорит о=== оператор:

НОТА

Swift также предоставляет два идентификатора оператора (=== а также!==), который вы используете, чтобы проверить, ссылаются ли обе ссылки на один и тот же экземпляр объекта. Для получения дополнительной информации см. Классы и структуры.

Ответы на вопрос(1)

Ваш ответ на вопрос