Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是';c';在Ruby中被称为字符或字符串-或者两者兼而有之?_C_Ruby_String_Terminology_Character - Fatal编程技术网

是';c';在Ruby中被称为字符或字符串-或者两者兼而有之?

是';c';在Ruby中被称为字符或字符串-或者两者兼而有之?,c,ruby,string,terminology,character,C,Ruby,String,Terminology,Character,如果我用Ruby输出hello[0]类,它会显示“String”。这是因为Ruby中存在单引号字符串,并且似乎没有char类型的概念。前几天我对同事说他有一个字符数组,他说“不,我没有,我有一个字符串数组”。吹毛求疵,是的,但从技术上讲,他也许是对的。来自C语言的我倾向于不把一个字符看作字符串。是否同意上面的hello数组是字符串数组而不是字符数组?您的同事是对的,Ruby似乎没有任何类型的字符类 char hello[] = "hello"; #C hello = ['h', 'e', 'l'

如果我用Ruby输出hello[0]类,它会显示“String”。这是因为Ruby中存在单引号字符串,并且似乎没有char类型的概念。前几天我对同事说他有一个字符数组,他说“不,我没有,我有一个字符串数组”。吹毛求疵,是的,但从技术上讲,他也许是对的。来自C语言的我倾向于不把一个字符看作字符串。是否同意上面的hello数组是字符串数组而不是字符数组?

您的同事是对的,Ruby似乎没有任何类型的字符类

char hello[] = "hello"; #C
hello = ['h', 'e', 'l', 'l', 'o'] #Ruby

是的,Ruby中没有char类,只有String。(注意,在C标准中,char定义为1字节,但unicode字符不是这样的)。

是。在C中,字符串表示为C-string,基本上是一个以零结尾的字符数组,而Ruby中的字符串是一个以更复杂的方式存储其内容的类。您可以将它的任何部分提取到一个新字符串中,Ruby可能不会降低您对它的访问权限。在C语言中,你可以直接访问它的内存,Ruby比它抽象得多。

在C语言中,字符不同于字符串(字符串是一个字符数组)。Ruby没有单独的字符类型。字符串可以容纳任意数量的字符,Fixnums可以容纳字符的ASCII值,并使用#chr方法将其转换为包含该字符的可打印字符串

Ruby中单引号和双引号字符串语法之间的差异与对字符串进行了多少预处理(例如插值)有关

>> 'c'.class                                                            
=> String