けいじゅ@SHLジャパンです. 

In [ruby-list :02138 ] the message: "[ruby-list:2138] Re: [BUG] for line in $< ", on Feb/15 01:09(+0200) 
matz / caelum.co.jp (Yukihiro Matsumoto)  writes: 
>|line.rb:18: [BUG] Segmentation fault
>|IOT trap
>|
>|します(;_;
>
>すんません.
>
>--- io.c~	Sun Feb  9 00:40:13 1997
>+++ io.c	Fri Feb 14 23:38:30 1997
>@@ -1951,7 +1951,7 @@
>     rb_define_method(cIO, "printf", io_printf, -1);
> 
>     rb_define_method(cIO, "each",  io_each_line, -1);
>-    rb_define_method(cIO, "each_line",  io_each_line, 0);
>+    rb_define_method(cIO, "each_line",  io_each_line, -1);
>     rb_define_method(cIO, "each_byte",  io_each_byte, 0);
> 
>     rb_define_method(cIO, "syswrite", io_syswrite, 1);
>@@ -2007,7 +2007,7 @@
>     rb_define_readonly_variable("$ARGF", &argf);
>     rb_define_global_const("ARGF", argf);
> 
>-    rb_define_singleton_method(argf, "each",  arg_each_line, 0);
>+    rb_define_singleton_method(argf, "each",  arg_each_line, -1);
>     rb_define_singleton_method(argf, "each_line",  arg_each_line, -1);
>     rb_define_singleton_method(argf, "each_byte",  arg_each_byte,
>     0);

幾つか質問があります

[1] $<.type

上のパッチで変わったのは, 第4パラメータだけですがこれってどういう意味
なんでしょう?

print $<.type 
----
Object

となりますが, これはどういう意味でしょうか?

$<は, 特異メソッドが定義されたオブジェクトなのでしょうか?


[2] cloneの定義
また,

f = $<.clone

とすると, $< と同じメソッドが使えるようになりますが, cloneは特異メソッ
ド(特異クラス)を継承していると考えて良いのでしょうか? 

[3] 特異クラスの継承
あるオブジェクトの特異クラスを継承するメソッドはcloneしかないのでしょ
うか?

[4] cloneの再定義
また, cloneも当然再定義できますが, cloneを再定義した場合も特異クラスの
継承関係を維持すべきなのでしょうか?

cloneを適当に再定義すると, この継承関係は維持できるとは限りませんよね.
cloneの再定義したい場合, 例えばデフォルトの動作はシャロウコピーですが, 
ディープコピーにしたいと思ったら, 以下のようにまずcloneをおこなって定
義した方が良いのでしょうか?

def clone
  x = super               # まずシャローコピー
  x.deep_copy_sub(self)   # 残りをコピーするユーザ定義メソッド
end

[5] オブジェクトの比較
特異クラス(すべての特異メソッド)が一致するかどうかの判断はできるのでしょ
うか? 


__
.....................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju / shljapan.co.jp <----