1

我正在尝试检索数组中字母的值。我拥有的数组是:

a = ["a","b","c","d","e","f","g","h"].

如果我想检索一个字母的值,代码是:

?a

但是,当我尝试时,?a[5]它给了我0. 有谁知道为什么会这样?

--抱歉澄清我使用的是 1.8.7 :)

4

3 回答 3

3

实际上,从 Ruby 1.9 开始。?a将为您提供字符串“a”,它用于为您提供该字符的 ASCII 代码。在这一点上,它只是另一种(有限的)字符串文字机制。

如果你想要一个字符值,你需要使用ord方法,如a[5].ordor ?a.ordord记录在http://ruby-doc.org/core-2.0.0/String.html#method-i-ord

?在 Ruby 1.9 中,当传递单个 Fixnum 时,运算符和 String方法的行为[]同时发生了变化,两者都返回了一个单字符的字符串,而它们曾经返回一个 Fixnum。

?顺便说一句,我在同一官方参考的 Literals/String 部分中找不到操作员的文档。

于 2013-09-28T19:23:29.350 回答
1

那是因为关联性/优先级。?a[5]被解释为(?a)[5],而不是?(a[5])。我想你期待后者,但实际上是前者。

于 2013-09-28T19:58:02.133 回答
0

在 Ruby 1.8?a == 'a'[0]中。有关?运算符的信息(搜索:“整数和浮点数”)

因此,您可以通过以下方式获取数组中字母的值a

a[5][0]

而在 Ruby > 1.9 中使用以下方法orda[5].ord

于 2013-09-28T19:31:07.973 回答