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
。
阅读 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
。