Swift 中的字符和字符串

Characters and Strings in Swift

阅读 documentation and this answer,我发现我可以通过以下任一方式初始化 Unicode 字符:

let narrowNonBreakingSpace: Character = "\u{202f}"
let narrowNonBreakingSpace = "\u{202f}"

据我了解,第二个实际上是一个字符串。与 Java 不同的是,它们都使用双引号(而不是字符的单引号)。不过,我见过几个例子,其中使用第二种形式(没有 Character),即使变量只包含一个字符。是人们懒惰还是忘记写 Character?还是 Swift 会处理所有细节,而我不需要为它操心?如果我知道我有一个仅包含单个 Unicode 值的常量,我是否应该始终使用 Character

在第二种情况下,Swift 编译器会将字符串的类型推断为实际的字符。因此,添加 : Character 并不是真正需要的。在这种情况下,我会添加它,因为很容易错误地认为这个 Character 是一个字符串,而另一个开发人员可能会尝试这样对待它。但是,编译器会因此而抛出错误,因为它推断此字符串的类型不是字符串而是字符。

所以在我看来,添加 Character 不是懒惰或忘记它的问题,而是相信编译器正确推断此常量 en 的类型的问题,以依赖编译器在我尝试时抛出正确的错误使用这个常量是错误的。

Swift的编译器基本上会处理所有细节,如果你添加Character并不重要,编译器会(应该)处理它。

当未指定类型时,Swift 将在创建变量或常量时从字符串文字创建一个 String 实例,无论长度如何。由于 String 在 Swift 和 Cocoa/Foundation 方法中非常普遍,您应该只使用它,除非您有特定需要 Character——否则您只需要每次需要使用时转换为 String