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