Ruby 为什么[0]返回1,[1]返回0等等?

Ruby 为什么[0]返回1,[1]返回0等等?,ruby,Ruby,我在一次测验中发现了一个问题,我注意到变量的这种奇怪行为: a = 5 puts a[0] # Output 1 puts a[1] # Output 0 有人能解释一下为什么我得到输出1和0吗?对于一个整数,在二进制表示中返回第n位: 7.downto(0) {|n| print 5[n] } 00000101=> 8 5是二进制的0101,因此5[0]返回1(首先从右边返回最低有效位),然后5[1]是0a5[2]是1“变量的奇怪行为”–a[0]就是5[0]–它与变量无关。5[0

我在一次测验中发现了一个问题,我注意到变量的这种奇怪行为:

a = 5
puts a[0]  # Output 1
puts a[1]  # Output 0
有人能解释一下为什么我得到输出1和0吗?

对于一个整数,在二进制表示中返回第n位:

7.downto(0) {|n| print 5[n] }
00000101=> 8
5
是二进制的
0101
,因此
5[0]
返回
1
(首先从右边返回最低有效位),然后
5[1]
0
a
5[2]
1

“变量的奇怪行为”–
a[0]
就是
5[0]
–它与变量无关。
5[0]
被称为
5[(0)
的语法糖。也就是说,Ruby允许将后者编写为前者<代码>[]
对于一个方法来说可能是一个奇怪的名称,但事实就是这样。方法在哪里定义?您可以对任何方法和接收器执行以下操作:
5.method(:[]).owner#=>Integer
。这告诉您该方法的文档位于。按照此方法获取任何方法的文档。