ケース(1)
以下のコードですが、これだと1.9.3、1.8.7でも動きますが、
# -*- coding: utf-8 -*- class Foo def foo "foo" end end class Bar < Foo def foo super + "bar" end alias bar foo undef foo end puts Bar.new.bar
ケース(2)
以下のように、undef fooの位置を上の方に持っていくと、
# -*- coding: utf-8 -*- class Foo def foo "foo" end end class Bar < Foo undef foo def foo super + "bar" end alias bar foo end puts Bar.new.bar
1.9.3の場合は以下のように実行できますが、
$ ruby -v ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] $ ruby foo.rb foobar
1.8.7では、以下のようにエラーが出て実行できません。
$ /usr/bin/ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0] $ /usr/bin/ruby foo.rb foo.rb:11:in `bar': superclass method `foo' disabled (NameError) from foo.rb:15
どちらのバージョンの挙動がしっくりきますか?