[#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

GyRCISE/JyE5SlZFeiQ3JD8kJCRIO1ckJCReJDckPyQsISI7fjRWJCxMNSQkJE4kRyFWGyhCT09Q

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

そえじま@勉強中です。

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

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

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

From: "Y. NOBUOKA" <nobuoka@...>
Date: 2010-09-17 08:29:00 UTC
List: ruby-list #47418
そえじまさん

信岡です。 既に他の人が回答していらっしゃいますがせっかく書いたのでお送りします。
『たのしい Ruby』 を所有しておらず、疑問点がよくわからないので的外れな回答になってしまっていたらすみません。

演算子 <=> は大小関係の比較のための演算子であり、自分自身 (self) と比較対象 (other) を比較し、
・self と other の大小関係が等しければ 0
・self が other よりも小さければ -1
・self が other よりも大きければ 1
を返すように定義すべきものです。 「self と other というオブジェクトを比較するとは何でしょうか?」
と書かれていますが、これはそのオブジェクトのクラスによって 「比較」 の定義は変わります。 例えば Bignum#<=>
は数値の大小を比較します [ http://ruby-doc.org/core-1.9/classes/Bignum.html#M001219
]。

また、モジュール Comparable は、インスタンスメソッド <=> が定義されているクラスにミックスインして使用します。 例えば演算子
<= は self と other を比較し、self と other が同じ場合と self の方が小さい場合に true
を返し、self が other よりも大きい場合に false を返しますが、それは演算子 <=> を使えば実現することができます
(<=> が 0 以下ならば true を返し、その他の場合は false を返せばよい)。

モジュール Comparable は Ruby の組み込みモジュールですが、それを自分で作るとしたらどういうコードになるのか、というのが
『たのしい Ruby』 に書いてある内容だと思います。


2010年9月17日16:43 T.Soejima <clev@ck2.so-net.ne.jp>:
> そえじま@勉強中です。
>
> 初歩の質問で申し訳ないのですが、「たのしいRuby」でさらっと
> 書いてあったので、大して気にしていなかったので、つまづいて
> います。すいません。m(__)m
>
> module Comparable
> def <=(other)     # ここの意味がわかりません。なにをしたいのでしょ
> うか?
> t= self <=> other # self と other というオブジェクトを比較するとは何で
> しょうか?
> if t <= 0
> return true
> else
> return false
> end
> end
> end
>
> (第2版 P.252より)
>
> テケテケな質問で申し訳ありませんが、ご教示お願いいたします。
>

-- 
信岡 裕也 (NOBUOKA Yuya)
e-mail: nobuoka@r-definition.com (PC 用)

In This Thread