【问题标题】:Is 'c' said to be a character or a string in Ruby - or both?'c' 是 Ruby 中的一个字符还是一个字符串 - 或两者兼而有之?
【发布时间】:2010-10-17 16:55:46
【问题描述】:
char hello[] = "hello"; #C
hello = ['h', 'e', 'l', 'l', 'o'] #Ruby

如果我在 Ruby 中输出 hello[0] 类,它会显示“String”。这是因为 Ruby 中存在单引号字符串,并且似乎没有 char 类型的概念。前几天我对我的同事说他有一个字符数组,他说“不,我没有,我有一个字符串数组”。挑剔,是的,但从技术上讲,也许他是正确的。来自 C 的世界,我倾向于不将单个字符视为字符串。是不是约定上面的hello数组是String数组而不是字符数组?

【问题讨论】:

    标签: c ruby string terminology character


    【解决方案1】:

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

    Ruby 中单引号和双引号字符串语法的区别在于对字符串进行了多少预处理(例如插值)。

    【讨论】:

      【解决方案2】:

      你的同事是对的,Ruby 似乎没有任何 Character 类。

      >> 'c'.class                                                            
      => String
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-02-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-22
            • 2011-10-16
            • 2020-06-03
            相关资源
            最近更新 更多