在下面的代碼[0..1]在Module.constants()方法中的含義是什麼?
Module.constants[0..1] # => [:object, :Module]
什麼是[0..1]這裏的意思?
在下面的代碼[0..1]在Module.constants()方法中的含義是什麼?
Module.constants[0..1] # => [:object, :Module]
什麼是[0..1]這裏的意思?
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"]
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]
模塊是一個類,但Class類繼承自Module類,所以你的s讓我困惑了一秒鐘;) – 2013-03-24 02:34:43
哈哈,是的,這很奇怪:'Class.superclass.class == Class#=> true'。 – 2013-03-27 09:13:42