0

在下面的代码中

Module.constants[0..1]  # => [:object, :Module]

[0..1] 在这里是什么意思?

4

2 回答 2

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]

当您使用 aRange作为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"]
于 2013-03-24T02:33:22.097 回答
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]
于 2013-03-24T02:26:46.290 回答