From: shugo@... (Shugo Maeda) Date: 1998-04-13T00:26:39+09:00 Subject: [ruby-dev:2254] Re: method to print self 前田です。 In message "[ruby-dev:2252] Re: method to print self" Kazunori NISHI wrote: |> (2) i++ はなく i+=1 |(...中略...) |> 要約すると |> i++ってのはメソッドで表現できないんで駄目 | |i++ を使いたい理由は、単に「短く書ける」という事ではなくて、i++ に慣れ |ると、i+=1 と書くのが悔しい、からです。i+=n に慣れている人が、i=i+n を |強要される感じです。 | |ですが、過去の議論を読んで、いろいろ問題点があるのがわかりました。そし |て、どなたの言葉か忘れてしまいましたが「オブジェクト指向では、i++ とか |は必要ない、イテレータを使うべき」というので、ふっきれました。それ以来、 |「i++ が不要なプログラムを書こう」と心がけています。勉強になりました。 メソッド名としてnextが使えるようになったので、prevも定義して、 i++ => i = i.next i-- => i = i.prev という構文糖とするのはアリかなと思ったりします。 # と議論を蒸し返したりして(^^; 個人的にはなくても不便は感じないのですが、単に馴れただけ かもしれません。 |ただ、rbc で作業をしていると、"abc" .p とか "abc" .print とかやりたく |なるので、できれば「p や print を public にして、引数を持たない場合は、 |self を出力する」のが理想です。 printは引数なしでは$_を出力するようになってますから、ちょっと無理 なのではないでしょうか。 |というか、自分で作ったクラスなどで、print をオーバーライドできるだけで |も嬉しいのですが、これも「事情」が絡んでいるんでしょうか? こちらは大丈夫だと思います。 class Foo def print $stdout.print(self) end public :print # 1.1なら不必要 end ただ、Foo(およびそのスーパークラス)の中でprintを呼び出していると まずいと思いますが...。 -- 前田 修吾 # サンデージャングルのオープニングがblankeyじゃなくなって # しまいましたね...。