From: rubikitch@... Date: 2008-03-29T12:47:57+09:00 Subject: [ruby-dev:34180] メソッドにクラスを定義させるとprivateになる? るびきちです。 ブロックを丸投げしてクラスを定義するとprivateになるのは仕様ですか? なぜそうなるのか挙動がいまいち理解できません。 最新版でも変わりません。 RUBY_VERSION # => "1.9.0" RUBY_RELEASE_DATE # => "2007-12-25" klass = Class.new do attr_accessor :v end o = klass.new o.v = 1 o.v # => 1 def defmeth(&block) Class.new(&block) end klass = defmeth do attr_accessor :v # !> private attribute? end o = klass.new o.v = 1 o.v # => # ~> -:19:in `
': private method `v=' called for #<#:0xb7b42834> (NoMethodError) VS RUBY_VERSION # => "1.8.6" RUBY_RELEASE_DATE # => "2008-03-24" klass = Class.new do attr_accessor :v end o = klass.new o.v = 1 o.v # => 1 def defmeth(&block) Class.new(&block) end klass = defmeth do attr_accessor :v end o = klass.new o.v = 1 o.v # => 1 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/