我已经完成了C,C ++,Java,并且这些语言告诉我字符用单引号括起来(大多数时候遵循正确的语法)但字符串是双引号。它是swift的语法,只允许字符在单引号内,或者提供这种语法背后有一些有效的理由(逻辑)。
let char1: Character = "A" //correct
let char2: Character = 'B' //incorrect
答案 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