char hello[] = "hello"; #C
hello = ['h', 'e', 'l', 'l', 'o'] #Ruby
如果我在Ruby中输出hello [0]的类,它会显示“String”。这是因为在Ruby中存在单引号字符串,并且似乎没有char类型的概念。前几天,我对我的同事说他有一个字符数组,他说“不,我有一个字符串数组”。挑剔,是的,但从技术上讲,他也许是正确的。来自C世界的我倾向于不将单个字符视为字符串。大家是否都同意hello数组是字符串数组而不是字符数组?
char hello[] = "hello"; #C
hello = ['h', 'e', 'l', 'l', 'o'] #Ruby
>> 'c'.class
=> String
是的。虽然在C中,字符串被表示为C-String,它基本上是一个以零结尾的字符数组,但在Ruby中,String是一种以更复杂的方式存储其内容的类。您可以从中提取任何部分到一个新的String中,并且Ruby可能不会给您更低级的访问权限。在C中,您可以直接访问其内存,而Ruby比这要抽象得多。
是的,在Ruby中没有char类,只有字符串。 (请注意,char在C标准中定义为1字节,但对于Unicode字符并非如此)。