[#47414] <=>の意味は? — "T.Soejima" <clev@...2.so-net.ne.jp>

そえじま@勉強中です。

37 messages 2010/09/17
[#47420] Re: <=>の意味は? — 藤川浩明 <fhir0aki3@...> 2010/09/17

 他の方がすでに解答されているみたいですが、一応僕なりの答えを書いてみます。僕もRuby初心者なのではっきりとは言えないんですが・・・。

[#47422] Re: <=>の意味は? — "T.Soejima" <clev@...2.so-net.ne.jp> 2010/09/17

そえじま@勉強中です。

[#47424] Re: <=>の意味は? — "Y. NOBUOKA" <nobuoka@...> 2010/09/17

信岡です。

[#47426] Re: <=>の意味は? — "T.Soejima" <clev@...2.so-net.ne.jp> 2010/09/17

そえじま@勉強中です。

[#47428] Re: <=>の意味は? — "Y. NOBUOKA" <nobuoka@...> 2010/09/17

そえじまさん

[#47429] Re: <=>の意味は? — "T.Soejima" <clev@...2.so-net.ne.jp> 2010/09/17

そえじま@勉強中です。

[#47433] Re: <=>の意味は? — 藤川浩明 <fhir0aki3@...> 2010/09/18

 色々返答したいと思いましたが、時間が無いので「OOPの何がいいのか、いまいち分かっておりません。」の部分にのみ解答させていただきます。

[#47435] Re: <=>の意味は? — "T.Soejima" <clev@...2.so-net.ne.jp> 2010/09/18

そえじま@勉強中です。

[#47438] Re: <=>の意味は? — masayoshi takahashi <maki@...> 2010/09/18

高橋征義です。『たのしいRuby』の著者の片割れの方から来ました。

[ruby-list:47447] Re: <=>の意味は?

From: arton <artonx@...>
Date: 2010-09-18 06:55:16 UTC
List: ruby-list #47447
artonです。

> 仰る通り、こういう書き方でCでも解決できるんじゃなかろうか?
> と思っていたので、別にRubyがどうのということではなくて、自分の
> 理解が及ぶように考えてもいいんだろうか?というレベルで質問
> させていただきました。
ここは難しいんですよね。
カプセル化については、間違いなくそのように考えても理解できるし、むしろ、
非OO言語で引数の取り違えとか、定義ミスとかの経験があるとその分、ありがた
みはわかりやすいと思います。
でも、それ以外については(記述量という形で目に見える)実装継承を除くと、
何をしているのかが手に取るようにわかるCでの記述よりも(手に取るようにわ
かるという抽象度の低さによる安心感のようなものが身についていると)、抽象
度が高い分だけ考え方を変える必要はあるように思います。
したがって、Cに落とした場合にどのような記述になるかといった視点は一度捨
てたほうが良いかも知れません。

そのためには、思うに、まずはRubyを使うとどれだけ楽に書けるか/書くかを追
求したほうが良いのではないでしょうか。
たとえば、

char buff[...];
長さを気にしながらfgetsか、ちょん切れるのを気にしてreadで読んで自分で改
行探して、
strcmpして、いや正規表現が必要なのでライブラリを探して来たりインストールしたり
sprintfして……
fclose忘れずに

とかやるよりも

File.open(file, 'r').each_line do |line|
  if line =~ /^ab./
    puts "line=#{line}, the 3rd char=#{line[2]}"
 end
end.close

と書けるほうが圧倒的に楽なので作るのも早いです(そのプログラムがどのよう
な使われ方をするのかといった点まで含めるとすべてRubyで済むとは思いません)。

つまり、Cでのプログラミングとは別の、簡単に早く書けるマクロのようなもの
だ、と割り切ると良いのではないかと思います。
上の例では、Fileオブジェクトやブロック(これ自体がProcオブジェクトのよう
なものだというのは別のメールで出ていました)、正規表現オブジェクトなどを
使っていますが、特にOOがどうしたというようなことは考えていませんし、考え
る必要もないと思います。でも局所化や、オブジェクトが返ることによる呼び出
しの連続などのメリットは受けています。

> ちょうど先ほど、Amazonでartonさまの本を注文しましたので、熟読
> したいと思います。
ありがとうございます。
筆者の一人として、あの本では、OOとはどのようにプログラムを考えるもので、
そのように考えるとどのようなメリットがあるのか、については説明できたと自
負しています。
上のほうで書いたこととは矛盾しているかも知れませんが、OOPはおもしろいし、
その考え方は応用がききますので、お役に立てると良いなぁと思います。

-- 
arton <artonx@yahoo.co.jp>

--------------------------------------
Get the new Internet Explorer 8 optimized for Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/ie8/

In This Thread