在以下代码中
Module.constants[0..1] # => [:object, :Module]
[0..1]在这里意味着什么?
答案 0 :(得分:2)
0..1
是一个范围。这是Ruby解析器创建Range对象的语法糖。你可以用范围做很多事情,包括简单的迭代:
irb(main):003:0> (1..3).class
=> Range
irb(main):004:0> (1..3).each {|x| puts x}
1
2
3
=> 1..3
您可以将其转换为Array
,其中包括:
irb(main):005:0> (1..3).to_a
=> [1, 2, 3]
当您使用Range
作为Array#[]
参数时,这意味着您需要索引在该范围内的所有元素(包括):
irb(main):007:0> stuff = %w{a b c d e f}
=> ["a", "b", "c", "d", "e", "f"]
irb(main):008:0> range = 2..4
=> 2..4
irb(main):009:0> stuff[range]
=> ["c", "d", "e"]
答案 1 :(得分:1)
Module.constants
返回Module
类中定义的所有常量的数组(即命名空间)(是的,Module
是一个类;请参阅Module.class
)。 [0..1]
说给我从0到1的数组的每个元素。通常,如果x
是一个数组,那么x[m..n]
将返回x
的子数组,其中包含从第m个到第n个的元素。例如:
x = [36, 25, 16, 9, 4]
x[1..3] # => [25, 16, 9]