Ruby 如何检索数组中字母的字符串值?

Ruby 如何检索数组中字母的字符串值?,ruby,ascii,Ruby,Ascii,我试图检索数组中字母的值。我拥有的阵列是: a = ["a","b","c","d","e","f","g","h"]. 如果要检索字母的值,代码为: ?a 然而,当我尝试时,一个[5]给了我0。有人知道为什么会这样吗 --很抱歉澄清,从Ruby 1.9开始,我实际上使用的是1.8.7:)?a将为您提供字符串“a”,其中它用于为该字符提供ASCII代码。这只是另一种(有限的)字符串文字机制 如果需要字符值,则需要使用ord方法,如a[5].ord或?a.ord中所述作战需求文件记录在 在Ru

我试图检索数组中字母的值。我拥有的阵列是:

a = ["a","b","c","d","e","f","g","h"].
如果要检索字母的值,代码为:

?a
然而,当我尝试
时,一个[5]
给了我
0
。有人知道为什么会这样吗


--很抱歉澄清,从Ruby 1.9开始,我实际上使用的是1.8.7:)

<代码>?a将为您提供字符串“a”,其中它用于为该字符提供ASCII代码。这只是另一种(有限的)字符串文字机制

如果需要字符值,则需要使用
ord
方法,如
a[5].ord
?a.ord
中所述<代码>作战需求文件记录在

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


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

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

如果需要字符值,则需要使用
ord
方法,如
a[5].ord
?a.ord
中所述<代码>作战需求文件记录在

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


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

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

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

a[5][0]

而在Ruby>1.9中,使用方法
ord
a[5]。在Ruby 1.8
中,ord
?a=='a'[0]
。有关的信息(搜索:“整数和浮点数”)

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

a[5][0]

而在Ruby>1.9中,使用方法
ord
a[5]。ord

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

这是因为联想性/优先性<代码>?将[5]解释为
(?a)[5]
,而不是
?(a[5])
。我想你期望的是后者,但实际上是前者。

你能链接文档吗,我从来没有见过这种方法。我知道
String\ord
,但不知道
?a
。。寻找同样的。。文件记录在哪里……)嗯,它不在,我认为它应该在哪一个地方。你能链接文档吗,我从来没有见过这种方法。我知道
String\ord
,但不知道
?a
。。寻找同样的。。文件记录在哪里……)嗯,它不在,我认为它应该在哪一个地方。
?a=='a'[0]
在1.9和2.0中仍然是正确的,因为
'a'[0]
在1.9和2.0中是“a”。0@PeterAlfvin:是的,你说得对。但这仅仅是因为这两个方法的返回值都以相同的方式进行了更改。
?a=='a'[0]
在1.9和2.0中仍然是正确的,因为
'a'[0]
在1.9和2.0中是“a”。0@PeterAlfvin:是的,你说得对。但这仅仅是因为两个方法的返回值都以相同的方式进行了更改。