[#9437] ruby 1.1c4 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

17 messages 1998/09/03

[#9570] ruby-gtk-0.11 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

16 messages 1998/09/16

[#9573] filter — gotoken@... (GOTO Kentaro)

ごとけんです

34 messages 1998/09/16
[#9575] Re: filter — Shin-ichro Hara <sinara@...> 1998/09/17

原です。

[#9577] Re: filter — Shin-ichro Hara <sinara@...> 1998/09/17

原です。

[#9613] can't clone Fixnum — Kikutani Makoto <kikutani@...>

前田さんのruby-jedパッチをJed 0.98.7+J0.5.3に無理やりあてて

27 messages 1998/09/19
[#9622] Re: can't clone Fixnum — shugo@... (MAEDA Shugo) 1998/09/21

前田です。

[#9633] Re: can't clone Fixnum — Kikutani Makoto <kikutani@...> 1998/09/22

Mon, Sep 21, 1998 at 06:44:30PM +0900 において

[#9635] Re: can't clone Fixnum — matz@... (Yukihiro Matsumoto) 1998/09/22

まつもと ゆきひろです

[#9637] Re: can't clone Fixnum — Kikutani Makoto <kikutani@...> 1998/09/22

回答どうもです。

[#9640] Re: can't clone Fixnum — matz@... (Yukihiro Matsumoto) 1998/09/22

まつもと ゆきひろです

[#9647] Re: can't clone Fixnum — Kikutani Makoto <kikutani@...> 1998/09/22

Tue, Sep 22, 1998 at 01:07:22PM +0900 において

[#9650] Re: can't clone Fixnum — matz@... (Yukihiro Matsumoto) 1998/09/22

まつもと ゆきひろです

[#9626] nif.rb (ver0.14) — Wakou Aoyama <wakou@...>

青山です。

35 messages 1998/09/21
[#9628] Re: nif.rb (ver0.14) — WATANABE Tetsuya <tetsu@...> 1998/09/22

渡辺哲也です。

[#9638] Re: nif.rb (ver0.14) — SHUDOH Kazuyuki <shudoh@...> 1998/09/22

渡辺哲也さん wrote:

[#9642] Re: nif.rb (ver0.14) — Kikutani Makoto <kikutani@...> 1998/09/22

Tue, Sep 22, 1998 at 12:58:23PM +0900 において

[#9703] Re: nif.rb (ver0.14) — hisanori@... 1998/09/24

松尾です。

[#9704] Re: nif.rb (ver0.14) — matz@... (Yukihiro Matsumoto) 1998/09/24

まつもと ゆきひろです

[#9705] Re: nif.rb (ver0.14) — hisanori@... 1998/09/24

松尾です。こんばんは。

[#9706] Re: nif.rb (ver0.14) — matz@... (Yukihiro Matsumoto) 1998/09/24

まつもと ゆきひろです

[#9723] Re: nif.rb (ver0.14) — hisanori@... 1998/09/25

松尾です。こんにちは。

[#9724] pstore.rb(Re: Re: nif.rb (ver0.14)) — matz@... (Yukihiro Matsumoto) 1998/09/25

まつもと ゆきひろです

[#9670] how to create a instance dinamically using String class. — Masato Taruishi <taru@...>

18 messages 1998/09/22
[#9671] Re: how to create a instance dinamically using String class. — ttate@... 1998/09/22

立石です。

[#9677] Re: how to create a instance dinamically using String class. — keiju@... (Keiju ISHITSUKA) 1998/09/23

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

[#9678] Re: how to create a instance dinamically using String class. — Masato Taruishi <taru@...> 1998/09/23

[#9702] [HAMATTA!] != — Shin-ichro Hara <sinara@...>

原です。

16 messages 1998/09/24

[#9770] ruby-jed SEGV — Kikutani Makoto <kikutani@...>

きくたにです。

16 messages 1998/09/29

[ruby-list:9391] Re: Delegator

From: ttate@...
Date: 1998-09-01 09:08:32 UTC
List: ruby-list #9391
立石です。

From: matz@netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-list:9381] Re: Delegator
matz> 1. 私のところではSEGVせずに
matz> 
matz> /tmp/test.rb:13:in `say': super: no superclass method `say' (NameError)
matz>         from /tmp/test.rb:16
matz> 
matz>    となります.SEGVするのはバグだと思うのですが….環境とバー
matz>    ジョンを教えて下さい.うちはlinuxで1.1c2,1.1c3,1.1d0で発
matz>    生しませんでした.

すみません。こちらはどうやらおそらく自作モジュール
のバグのようです。自宅に帰って再現させてみると上記
と同じようなエラーとなってしまいました。
拡張モジュールの方はいろいろと変更してしまったあと
なので今となってはどういう状況だったのか分かりません。
お騒がせしてしまいました。m(_ _)m

matz> 2. SimpleDelegatorは転送先オブジェクトの持っているメソッドを
matz>    特異メソッドとして定義します.ので,特異メソッドfoo.sayを
matz>    定義するとSimpleDelegatorによる定義を上書きしてしまいます.
matz>    ですから,superで呼べないでエラーになったのだと思います.
matz> 
matz>         foo = DelegateClass(Foo).new
matz>         def foo.say
matz>           ...
matz>           super
matz>         end
matz> 
matz>    とかなら動作するような気がするんですが.

こちらは、DelegateClass(Foo)によって生成させた
クラスにinitializeを再定義する必要があるため
DelegateClass(Foo).new という書き方はできない
ようです。aliasを使ってごまかすよりもこちらの方法で
なんとか initialize 再定義の手間を省けないか考えた
のですが次のような感じの修正はいかがでしょう?

*** delegate.rb.old	Tue Sep  1 17:55:38 1998
--- delegate.rb	Tue Sep  1 18:02:03 1998
***************
*** 69,81 ****
  
  #
  def DelegateClass(superclass)
    klass = Class.new
    methods = superclass.instance_methods
    methods -= ::Kernel.instance_methods
    methods |= ["to_s","to_a","inspect","hash","eql?","==","=~","==="]
    klass.module_eval <<EOS
!   def initialize(obj)
!     @obj = obj
    end
  EOS
    for method in methods
--- 69,82 ----
  
  #
  def DelegateClass(superclass)
+   name = superclass.to_s
    klass = Class.new
    methods = superclass.instance_methods
    methods -= ::Kernel.instance_methods
    methods |= ["to_s","to_a","inspect","hash","eql?","==","=~","==="]
    klass.module_eval <<EOS
!   def initialize(*argv)
!     @obj = #{name}.new(*argv)
    end
  EOS
    for method in methods
***************
*** 94,103 ****
  end
  
  if __FILE__ == $0
!   class ExtArray<DelegateClass(Array)
!     def initialize()
!       super([])
      end
    end
  
    ary = ExtArray.new
--- 95,105 ----
  end
  
  if __FILE__ == $0
!   class NamedArray<DelegateClass(Array)
!     def set_name(name)
!       @name = name
      end
+     attr_reader :name
    end
  
    ary = ExtArray.new

In This Thread