Module.constants()方法中[0..1]的含义是什么?

时间:2013-03-24 02:18:01

标签: ruby

在以下代码中

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

[0..1]在这里意味着什么?

2 个答案:

答案 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]