【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に記載。今回はとばした。)