在課堂上實施
Enumerable
是 Ruby 中最受歡迎的模組。它的目的是為你提供像 map
,select
,reduce
等可迭代的方法。使用 Enumerable
的類包括 Array
,Hash
,Range
。要使用它,你必須 include Enumerable
並實現 each
。
class NaturalNumbers
include Enumerable
def initialize(upper_limit)
@upper_limit = upper_limit
end
def each(&block)
0.upto(@upper_limit).each(&block)
end
end
n = NaturalNumbers.new(6)
n.reduce(:+) # => 21
n.select(&:even?) # => [0, 2, 4, 6]
n.map { |number| number ** 2 } # => [0, 1, 4, 9, 16, 25, 36]