Поскольку Swift
является языком с открытым исходным кодом, вы можете проверить реализацию встроенных методов в GitHub.
Вы можете найти оператор равенства Character
здесь .
extension Character: Equatable {
@inlinable @inline(__always)
@_effects(readonly)
public static func == (lhs: Character, rhs: Character) -> Bool {
return lhs._str == rhs._str
}
}
Как видите, внутренне, Character
можно инициализировать из String
, а оператор ==
для Character
использует это внутреннее свойство String
для сравнения двух Character
s.
@frozen
public struct Character {
@usableFromInline
internal var _str: String
@inlinable @inline(__always)
internal init(unchecked str: String) {
self._str = str
_invariantCheck()
}
}
Вы можете найти реализацию ==
для String
в StringComparable.swift