我正在尝试检索数组中字母的值。我拥有的数组是:
a = ["a","b","c","d","e","f","g","h"].
如果我想检索一个字母的值,代码是:
?a
但是,当我尝试时,?a[5]
它给了我0
. 有谁知道为什么会这样?
--抱歉澄清我使用的是 1.8.7 :)
实际上,从 Ruby 1.9 开始。?a
将为您提供字符串“a”,它用于为您提供该字符的 ASCII 代码。在这一点上,它只是另一种(有限的)字符串文字机制。
如果你想要一个字符值,你需要使用ord
方法,如a[5].ord
or ?a.ord
。 ord
记录在http://ruby-doc.org/core-2.0.0/String.html#method-i-ord
?
在 Ruby 1.9 中,当传递单个 Fixnum 时,运算符和 String方法的行为[]
同时发生了变化,两者都返回了一个单字符的字符串,而它们曾经返回一个 Fixnum。
?
顺便说一句,我在同一官方参考的 Literals/String 部分中找不到操作员的文档。
那是因为关联性/优先级。?a[5]
被解释为(?a)[5]
,而不是?(a[5])
。我想你期待后者,但实际上是前者。
在 Ruby 1.8?a == 'a'[0]
中。有关?
运算符的信息(搜索:“整数和浮点数”)
因此,您可以通过以下方式获取数组中字母的值a
:
a[5][0]
而在 Ruby > 1.9 中使用以下方法ord
:a[5].ord