-- forwatable.rb $Release Version: 1.1 $ $Revision: 1.1 $ $Date: 2001/07/19 05:42:06 $ =begin = Forwardable ¥¯¥é¥¹¤ËÂФ·¥á¥½¥Ã¥É¤Î°Ñ¾ùµ¡Ç½¤òÄêµÁ¤·¤Þ¤¹. == »È¤¤Êý ¥¯¥é¥¹¤ËÂФ·¤Æextend¤·¤Æ»È¤¤¤Þ¤¹. class Foo extend Forwardable def_delegators("@out", "printf", "print") def_delegators(:@in, :gets) def_delegator(:@contents, :[], "content_at") end f = Foo.new f.printf ... f.gets f.content_at(1) == ¥á¥½¥Ã¥É --- Forwardable#def_instance_delegators(accessor, *methods) ((|methods|))¤ÇÅϤµ¤ì¤¿¥á¥½¥Ã¥É¤Î¥ê¥¹¥È¤ò((|accessor¤Ë|))°Ñ¾ù¤¹¤ë ¤è¤¦¤Ë¤·¤Þ¤¹. --- Forwardable#def_instance_delegator(accessor, method, ali = method) ((||method|))¤ÇÅϤµ¤ì¤¿¥á¥½¥Ã¥É¤ò((|accessor|))¤Ë°Ñ¾ù¤¹¤ë¤è¤¦¤Ë¤· ¤Þ¤¹. ((|ali|))¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿¤È¤¤Ï, ¥á¥½¥Ã¥É((|ali|))¤¬¸Æ¤Ð ¤ì¤¿¤È¤¤Ë¤Ï, ((|accessor|))¤ËÂФ·((|method|))¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹. --- Forwardable#def_delegators(accessor, *methods) ((|Forwardable#def_instance_delegators|))¤ÎÊÌ̾¤Ç¤¹. --- Forwardable#def_delegator(accessor, method, ali = method) ((|Forwardable#def_instance_delegator|))¤ÎÊÌ̾¤Ç¤¹. = SingleForwardable ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·, ¥á¥½¥Ã¥É¤Î°Ñ¾ùµ¡Ç½¤òÄêµÁ¤·¤Þ¤¹. == »È¤¤Êý ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ((|extend|))¤·¤Æ»È¤¤¤Þ¤¹. g = Goo.new g.extend SingleForwardable g.def_delegator("@out", :puts) g.puts ... == ¥á¥½¥Ã¥É --- SingleForwardable#def_singleton_delegators(accessor, *methods) ((|methods|))¤ÇÅϤµ¤ì¤¿¥á¥½¥Ã¥É¤Î¥ê¥¹¥È¤ò((|accessor|))¤Ë°Ñ¾ù¤¹¤ë ¤è¤¦¤Ë¤·¤Þ¤¹. --- SingleForwardable#def_singleton_delegator(accessor, method, ali = method) ((|method|))¤ÇÅϤµ¤ì¤¿¥á¥½¥Ã¥É¤ò((|accessor|))¤Ë°Ñ¾ù¤¹¤ë¤è¤¦¤Ë¤·¤Þ ¤¹. ((|ali|))¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿¤È¤¤Ï, ¥á¥½¥Ã¥É((|ali|))¤¬¸Æ¤Ð¤ì ¤¿¤È¤¤Ë¤Ï, ((|accessor|))¤ËÂФ·((|method|))¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹. --- SingleForwardable#def_delegators(accessor, *methods) ((|SingleForwardable#def_singleton_delegators|))¤ÎÊÌ̾¤Ç¤¹. --- SingleForwardable#def_delegator(accessor, method, ali = method) ((|SingleForwardable#def_singleton_delegator|))¤ÎÊÌ̾¤Ç¤¹. =end