在課堂上實施
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]