alias
id:walf443さんの記事を読んでいて、「alias は構文なのでメソッドの中では使えない」というrefeの記述を見ました。へえ…と思って試します。
def rubyco puts "rubyco" end def change(x) if x alias org_rubyco rubyco end end change(false) org_rubyco #=> undefined local variable or method `org_rubyco' for main:Object (NameError)
def rubyco puts "rubyco" end def change(x) if x alias org_rubyco rubyco end end change(true) org_rubyco #=> rubyco
疑問:…あれ? 上の2つの実行結果だと、メソッドの中でaliasが使えているように思うのですが、これはわたしの勘違いでしょうか。
追記:id:walf443さんがさらに調査してくださったようです。それによると:
- メソッドの中で使えないのはalias_methodのようである
- aliasに変数を渡して、動的に別名を付けるのはできないらしい