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