¾ç¨ç

Ruby 1.9.2¤«¤é¡¢DeletgateClass¸µ¤Îprotected¥á¥½¥Ã¥É¤ò
¸Æ¤Ó½Ð¤·¤¿ºÝ¤Îµóư¤¬ÊѤï¤Ã¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤ë¤Î¤Ç 
¤¹¤¬¡¢
¤³¤ì¤Ï1.9.2¤«¤é»ÅÍÍÊѹ¹¤¬¤¢¤Ã¤¿¤È¤¤¤¦¤³¤È¤Ç¤·¤ç¤¦ 
¤«¡©
ºÆ¸½¥±¡¼¥¹¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

require 'delegate'

class Foo
   protected
   def foo
     'foo'
   end
end

class Bar < DelegateClass(Foo)
   def initialize
     super Foo.new
   end

   def baz
     foo
   end
end

p Bar.new.baz


% ruby19 -v
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-darwin9.7.0]
% ruby19 binding.rb
"foo"

% ruby_trunk -v
ruby 1.9.2dev (2009-07-19 trunk 24201) [i386-darwin9.7.0]
% ruby_trunk binding.rb
binding.rb:16:in `baz': protected method `foo' called for #<Foo: 
0x2d01b8> (NoMethodError)
	from binding.rb:20:in `<main>'


--
Akira Matsuda<ronnie / dio.jp>