1  -- forwatable.rb
2                                                $Release Version: 1.1 $
3                                                $Revision: 47689 $
4
5=begin
6= Forwardable
7
8クラスに対しメソッドの委譲機能を定義します.
9
10== 使い方
11
12クラスに対してextendして使います.
13
14  class Foo
15    extend Forwardable
16
17    def_delegators("@out", "printf", "print")
18    def_delegators(:@in, :gets)
19    def_delegator(:@contents, :[], "content_at")
20  end
21  f = Foo.new
22  f.printf ...
23  f.gets
24  f.content_at(1)
25
26== メソッド
27
28--- Forwardable#def_instance_delegators(accessor, *methods)
29
30      ((|methods|))で渡されたメソッドのリストを((|accessorに|))委譲する
31      ようにします.
32
33--- Forwardable#def_instance_delegator(accessor, method, ali = method)
34
35      ((||method|))で渡されたメソッドを((|accessor|))に委譲するようにし
36      ます. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ば
37      れたときには, ((|accessor|))に対し((|method|))を呼び出します.
38
39--- Forwardable#def_delegators(accessor, *methods)
40
41      ((|Forwardable#def_instance_delegators|))の別名です.
42
43--- Forwardable#def_delegator(accessor, method, ali = method)
44
45      ((|Forwardable#def_instance_delegator|))の別名です.
46
47= SingleForwardable
48
49オブジェクトに対し, メソッドの委譲機能を定義します.
50
51== 使い方
52
53オブジェクトに対して((|extend|))して使います.
54
55  g = Goo.new
56  g.extend SingleForwardable
57  g.def_delegator("@out", :puts)
58  g.puts ...
59
60== メソッド
61
62--- SingleForwardable#def_singleton_delegators(accessor, *methods)
63
64      ((|methods|))で渡されたメソッドのリストを((|accessor|))に委譲する
65      ようにします.
66
67--- SingleForwardable#def_singleton_delegator(accessor, method, ali = method)
68
69      ((|method|))で渡されたメソッドを((|accessor|))に委譲するようにしま
70      す. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ばれ
71      たときには, ((|accessor|))に対し((|method|))を呼び出します.
72
73--- SingleForwardable#def_delegators(accessor, *methods)
74
75      ((|SingleForwardable#def_singleton_delegators|))の別名です.
76
77--- SingleForwardable#def_delegator(accessor, method, ali = method)
78
79      ((|SingleForwardable#def_singleton_delegator|))の別名です.
80=end
81