[#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:47422] Re: <=>の意味は?

From: "T.Soejima" <clev@...2.so-net.ne.jp>
Date: 2010-09-17 10:03:14 UTC
List: ruby-list #47422
そえじま@勉強中です。

皆さん、ありがとうございます。多謝m(__)m

で、自分の問題が分かってきました。
この場合の'self'の意味が分からないから、何をやりたいのか
わからないんじゃないかという結論に達しました。

'self' が出てきたときに一体どのオブジェクトを対象にしてる
のかがすぐに理解できれば読めそうな気がしました。

def <=(other)
t=self<=>other

で、この'self'というのを教えていただけないでしょうか?
重ねて申し訳ありませんが、よろしくお願いいたします。




藤川浩明 さんは書きました:
>  他の方がすでに解答されているみたいですが、一応僕なりの答えを書いてみます。僕もRuby初心者なのではっきりとは言えないんですが・・・。
>
>  <=>はsoraさんの言ってた通り、UFO演算子って言います。
>
>  A <=> B とすると、
>
>  A < Bならば負の数を返し、
>
>  A > Bならば正の数を返し、
>
>  AとBが等しければ0を返します。
>
>
>  これを利用して<とか>とか<=とかのメソッドを作れるわけです。
>
>  def <=(other)は、otherとオブジェクトを<=で比較するメソッドを作っています。
>
>  t= self <=> otherは、self(さっきの例で言えばA)とother(さっきの例で言えばB)を<=>した値をtに代入しています。
>
>  で、その続きのif式ですが、とりあえずコメントをつけてみました。
>
> if t <= 0 # tは0(つまりotherと等しい)、または負の数(つまりotherより小さい)か?
>   return true
> else # tが1以上(つまりotherより大きい)か?
>   return false
> end
>
>  ん〜、なんかむしろわかりづらくなってしまったかもしれませんが、ようはselfがother以下ならtrueを返す<=メソッドを作ろうとしているわけです。
>
>  そのために、<=>を使ってselfがotherと等しいかそれとも小さいかそれとも大きいかを調べてるんです。
>
>  あ〜もうなんかグダグダですね・・・。スミマセン・・・。
>
>
>   


In This Thread