オープンクラスとは
既存のクラスを自在に拡張するようなコードを書けること。
例. Numericクラスの拡張
selfが正の数なら0からselfの数まで1ずつ増やした配列を返すメソッドstepを定義してみる。
class Numeric
def steps
return [] if self <= 0
0.upto(self).to_a
end
end
p 10.steps #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p 8.steps #=> [0, 1, 2, 3, 4, 5, 6, 7, 8]
p -20.steps #=> []
p 0.steps #=> []