我看到 "é" ( "\u{E9}"
, 1 个代码点) 和 "e" + 急性 ( "\u{65}\u{301}"
, 2 个代码点) 是相等的,这很棒。
for的文档继承自它的规则,并没有解释它的规则。另一方面,我环顾了附件#29,但运气不佳。Swift 是否实现了自己的逻辑?==
Character
Equatable
无论哪种情况,Swift 中的字符相等性是如何确定的?
由于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
可以从 a 初始化,String
并且==
操作符 forCharacter
使用该内部String
属性来比较两个Character
s。
@frozen
public struct Character {
@usableFromInline
internal var _str: String
@inlinable @inline(__always)
internal init(unchecked str: String) {
self._str = str
_invariantCheck()
}
}
你可以在StringComparable.swift==
中找到for的实现String