[#49575] define_method内でsuper(*args)を呼ぶとエラーになる — Koga Osamu <osak.63@...>
古賀といいます。
4 messages
2013/09/02
[#49582] ruby v2.0 における zip/zipfilesystem の LoadError — "YOSHIIZUMI" <t-yoshiizumi@...>
吉泉といいます。
4 messages
2013/09/07
[ruby-list:49576] Re: define_method内でsuper(*args)を呼ぶとエラーになる
From:
SASADA Koichi <ko1@...>
Date:
2013-09-02 17:40:07 UTC
List:
ruby-list #49576
ご指摘ありがとうございます。
> この挙動はRubyの仕様なのでしょうか、それともバグでしょうか?
> もしも仕様なのでしたら、なぜこのような挙動になっているのでしょうか?
エラーメッセージの通り、無引数 super だけだと define_method では対応しな
いよ、と言っております。
しかし、*args 付けてるので、これをエラーにするのはおかしいですね。バグな
気がします。調べます。
#
# ところで、2.1.0 だと foo は private メソッドになるので、
# そもそも呼べないのですね。
class C; self; end.send(:define_method, :foo){}
C.new.foo
#=> OK on ruby 2.0.0p299 (2013-08-29) [i386-mswin32_110]
#=> NG on ruby 2.1.0dev (2013-09-02 trunk 42770) [i386-mswin32_110]
t.rb:2:in `<main>': private method `foo' called for #<C:0x2b7a6cc>
(NoMethodError)
こういう define_method の使い方は初めて見たのですが、よく使う書き方なん
でしょうか(そもそも define_method は嫌いなので使わないという)。
--
// SASADA Koichi at atdot dot net