blog.waterlow.work

Ruby, Rails, js, etc...

【Ruby】動的プログラミング1

前回のまとめ

Rubyのクラスオブジェクトとは?
→クラスを定義するということはClassクラスのインスタンスを作るということ。
インスタンスなのでできることはメソッドを実行するだけ。メソッドの定義も親クラスのメソッドを実行しているだけ。この辺は要復習。

7-1 オープンなクラス

オープンなクラスとは
opened classと言ったほうが近い?以下のように既存のクラスを再定義、メソッドの追加等ができる。

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]

弊害としては拡張した機能を限定する方法がないこと。ただRuby2.0以降ではRefinementsを使えば限定を行える。(パーフェクトRuby6-6に記載。今回はとばした。)