我已经完成了 C、C++、Java,这些语言告诉我字符用单引号括起来(主要是在遵守正确的语法时),但字符串是双引号的。 Swift 的语法是否只允许字符位于单引号内,或者提供这种语法背后有一些有效的原因(逻辑)。
let char1: Character = "A" //correct
let char2: Character = 'B' //incorrect
自第一个 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"
and "c"
实际上是'a'
, 'b'
, and 'c'
。而且,由于函数原型直到 ANSI C 才被引入,foo("b")
在该语言的原始 K&R 版本中甚至不可能进行推理。
当语言具有类型推断系统时,不再需要程序员的帮助,因此 Swift 设计者决定统一字符串和字符常量的语法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)