undefによく似た機能としてremove_methodがあります。当該クラスのメソッドのみを取り除くことが特徴です。対象となるクラスにメソッドが定義されていない場合にはエラーになります(図2)。
|
図2●remove_methodを用いてメソッドを削除した例 |
aliasはメソッドに別名を付けます(図3)。
|
図3●aliasを用いてメソッドに別名を付けた例 |
別名を付けられたメソッドは名前が違うだけで,元のメソッドと全く同じ動きをします。しかし,元のメソッドをundefやremove_methodで取り除いても別名の方は問題なく動作します(図4)。
|
図4●aliasの動作例 |
aliasはメソッドではなく,Rubyの文法の一部です。undefにメソッド版のundef_methodがあったのと同様に,aliasと同じ機能を備えた,メソッド版のalias_methodが存在します。
includeは,クラスやモジュールに別のモジュールが持っているメソッドや定数を取り込むための機能です。これはundefやaliasのように直接メソッドを操作する機能ではありませんが,オープンクラスによって,既存のクラスにモジュールの機能を追加します。