单引号,包含swift中的字符

时间:2015-07-14 19:07:13

标签: swift

我已经完成了C,C ++,Java,并且这些语言告诉我字符用单引号括起来(大多数时候遵循正确的语法)但字符串是双引号。它是swift的语法,只允许字符在单引号内,或者提供这种语法背后有一些有效的理由(逻辑)。

let char1: Character = "A" //correct 

let char2: Character = 'B' //incorrect 

2 个答案:

答案 0 :(得分:8)

自第一个C编译器开发以来,编译器技术的状态发生了很大变化。在没有程序员帮助的情况下,编译器在自己搞清楚事物方面变得更聪明,包括预期的表达类型。

找出char与字符串文字是一个这样的例子。从理论上讲,今天C的结构允许在许多情况下推断文字的类型。例如,在下面的代码中,编译器有足够的信息来处理单字符字符串,就像它们是字符文字一样:

void foo(char c);
char s[] = "xyz";
// None of the below would compile
char a = "a";
foo("b");
if (s[1] == "c") {
    ...
}

然而,回到那时,要求程序员告诉编译器"a""b""c"实际上是'a',{{1 }和'b'。此外,由于在ANSI C之前没有引入函数原型,因此在该语言的原始K& R版本中甚至无法进行'c'推断。

当语言具有类型推断系统时,不再需要程序员的帮助,因此Swift设计者决定统一字符串和字符常量的语法。

答案 1 :(得分:7)

Swift中没有单引号。

声明字符的唯一方法是使用显式Character类型。

let a: Character = "a"

您可以在此处阅读有关Swift词汇结构的更多信息https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html