From: "岡本" Date: 2000-11-16T13:57:00+09:00 Subject: [ruby-list:26006] def foo(arg=@member) 岡本といいます。 先日何気なく下のようなコードを書いてみたところ、何の問題もなく動きました。 class Foo attr_accessor :memb def foo( arg = 1 ) return arg end def goo( arg = @memb ) return arg end def hoo( arg = $1 ) return arg end end a = Foo.new p a.foo => 1 p a.goo => nil a.memb=5 p a.goo => 5 /str(ing)/ =~ "string" p $1 => "ing" p a.hoo => nil デフォルト引数として与える式のスコープは呼び出されるメソッド側のスコープと 同じらしいと解釈したのですが、「完全に」同じと考えて差し支えないんでしょうか。 何でこんなことをやったかというと def foo( arg = nil ) if arg != nil @memb = arg else arg = @memb end ...... end のようなコードを def foo( arg = @memb ) @memb = arg ...... end と、より単純にかけるかな、と思ったからです。 そう書けたとして、そんなに嬉しいもんなのか自分でも分からんのですが…。