Swift 如何在字符中定义==?
我看到“é”(Swift 如何在字符中定义==?,swift,unicode,equatable,grapheme-cluster,Swift,Unicode,Equatable,Grapheme Cluster,我看到“é”(“\u{E9}”,1个代码点)和“e”+急性(“\u{65}\u{301}”,2个代码点)是相等的,这很好 字符的==格式继承自equalable,不解释其规则。另一方面,我环顾四周,运气不佳。Swift是否实现了自己的逻辑 在这两种情况下,如何在Swift中确定字符相等性?由于Swift是一种开放源代码语言,您可以在GitHub上检查内置方法的实现 您可以找到字符的相等运算符 如您所见,在内部,字符可以从字符串初始化,而字符的==操作符使用该内部字符串属性来比较两个字符 @fro
“\u{E9}”
,1个代码点)和“e”+急性(“\u{65}\u{301}”
,2个代码点)是相等的,这很好
字符
的==
格式继承自equalable
,不解释其规则。另一方面,我环顾四周,运气不佳。Swift是否实现了自己的逻辑
在这两种情况下,如何在Swift中确定字符相等性?由于
Swift
是一种开放源代码语言,您可以在GitHub上检查内置方法的实现
您可以找到字符
的相等运算符
如您所见,在内部,字符
可以从字符串
初始化,而字符
的==
操作符使用该内部字符串
属性来比较两个字符
@frozen
public struct Character {
@usableFromInline
internal var _str: String
@inlinable @inline(__always)
internal init(unchecked str: String) {
self._str = str
_invariantCheck()
}
}
您可以在中找到
=
forString
的实现,我认为您未询问的问题的答案是,“您需要先手动规范化两个字符”。
@frozen
public struct Character {
@usableFromInline
internal var _str: String
@inlinable @inline(__always)
internal init(unchecked str: String) {
self._str = str
_invariantCheck()
}
}