[#8257] Re: Smalltalk [Re: design patterns] — 助田 雅紀 <masaki.suketa@...>

助田です。

11 messages 1998/06/09
[#8259] Re: Smalltalk [Re: design patterns] — KIMURA Koichi <kkimura@...> 1998/06/10

[#8262] TkGrid do not exist? — Hiramatu Yoshifumi <hiramatu@...>

平松です。

26 messages 1998/06/10
[#8266] Re: TkGrid do not exist? — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#8269] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8271] Re: TkGrid do not exist? — NAGAI Hidetoshi <nagai@...> 1998/06/10

永井@知能.九工大です.

[#8375] new MethodIndex — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

21 messages 1998/06/16
[#8447] new MethodIndex — TEI meiki <tei@...> 1998/06/20

こんにちは、鄭です。

[#8448] new MethodIndex — TEI meiki <tei@...> 1998/06/20

再び、鄭です。_o_

[#8418] how to use delegate — gotoken@... (GOTO Kentaro)

ごとけんです

18 messages 1998/06/18
[#8419] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8420] Re: how to use delegate — gotoken@... (GOTO Kentaro) 1998/06/19

ごとけんです

[#8421] Re: how to use delegate — matz@... (Yukihiro Matsumoto) 1998/06/19

まつもと ゆきひろです

[#8521] hash sort — "Kazuhiro Yoshida" <s95l980@...>

もりきゅうです。

34 messages 1998/06/26
[#8523] hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8533] Re: hash sort — WATANABE Hirofumi <watanabe@...> 1998/06/26

わたなべです.

[#8534] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8536] Re: hash sort — Sinichiro Dezawa <dezawa@...> 1998/06/26

出沢です

[#8538] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8539] Re: hash sort — TAKAHASHI Masayoshi <maki@...> 1998/06/26

高橋です。

[#8541] Re: hash sort — gotoken@... (GOTO Kentaro) 1998/06/26

ごとけんです

[#8546] Re: hash sort — Tadayoshi Funaba <tadf@...> 1998/06/26

ふなばです。

[ruby-list:8427] Re: how to use delegate

From: matz@... (Yukihiro Matsumoto)
Date: 1998-06-19 08:35:42 UTC
List: ruby-list #8427
まつもと ゆきひろです

In message "[ruby-list:8426] Re: how to use delegate"
    on 98/06/19, GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp> writes:

|ごとけんです

|>あ,でもこの場合,メソッドの再定義が出来ないので,無名のクラ
|>スを生成する関数を用意して
|>
|>  class FakeArrray<DelegateClass(Array)
|>    ...
|>  end
|>
|>の方が完璧に近そうですね.おお,テンプレートクラスのようだ.
|># これは宿題にしましょう.
|
|やるべきことが理解したつもりですが、殴り書きしたのが
|すぐには動きそうに無い雰囲気なので(^^;; 週末の宿題に
|させて頂きます (^^;;;

教育的見地から効果的かどうかは分かりませんが,^^;;;
[ruby-list:8425]に刺激されて書いてしまいましたので,解答とし
ます.

def DelegateClass(superclass)
  klass = Class.new
  methods = superclass.instance_methods
  methods -= ["__getobj__","to_s","nil?","to_a","hash","dup","==","=~"]

  klass.module_eval <<EOS
  def initialize(obj)
    @obj = obj
  end
EOS
  for method in methods
    klass.module_eval <<EOS
    def #{method}(*args, &block)
      begin
	@obj.__send__(:#{method}, *args, &block)
      rescue
	$@[0,2] = nil
	raise
      end
    end
EOS
  end

  return klass;
end

class ExtArray < DelegateClass(Array)
  def initialize(data)
    super(data.clone)
  end
end
temp = [1, 3, 2, 5, 4]
data = ExtArray.new(temp)

In This Thread