2013-03-24 65 views

回答

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] 

当您使用RangeArray#[]的说法,这意味着你想要索引在该范围内的所有元素(包含):

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

Module.constants返回在Module类(是的,Module是类;参见Module.class)中定义的所有常量(即命名空间)的数组。 [0..1]说给我从0到1的数组中的每一个元素。通常,如果x是一个数组,则x[m..n]返回由第m个元素到第n个元素组成的子阵列x。例如:

x = [36, 25, 16, 9, 4] 
x[1..3] # => [25, 16, 9] 
+0

模块是一个类,但Class类继承自Module类,所以你的s让我困惑了一秒钟;) – 2013-03-24 02:34:43

+0

哈哈,是的,这很奇怪:'Class.superclass.class == Class#=> true'。 – 2013-03-27 09:13:42

相关问题