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

From: "Y. NOBUOKA" <nobuoka@...>
Date: 2010-09-17 11:42:52 UTC
List: ruby-list #47424
信岡です。

> 'self' が出てきたときに一体どのオブジェクトを対象にしてる
> のかがすぐに理解できれば読めそうな気がしました。
>
> def <=(other)
> t=self<=>other
>
> で、この'self'というのを教えていただけないでしょうか?

メソッド内における self は、メソッドのレシーバオブジェクトを参照します。
基本となる例を次に示します。

class Foo
  def getSelf
    return self
  end
end

foo = Foo.new()
foo.equal? foo.getSelf() #=> true: Foo#getSelf メソッドは self を返す. メソッド内の
self はレシーバ foo の参照先オブジェクト

変数 foo の参照先オブジェクトをレシーバとしてメソッド getSelf を呼び出すと、getSelf メソッド内の self は foo
の参照先オブジェクトを参照します。
さらにモジュールで定義されたメソッド内の self について考えてみます。

module Mod
  def getSelfInMod
    return self
  end
end

class Foo
  # モジュール Mod をミックスインする
  include Mod
end

foo = Foo.new()
foo.equal? foo.getSelfInMod() #=> true: foo.getSelfInMod メソッドはモジュール
Mod で定義されている.
                                           # getSelfInMod メソッド内の self
はやはりレシーバ foo の参照先オブジェクト

メソッドがモジュールで定義されている場合でも同様で、変数 foo の参照先オブジェクトをレシーバとしてメソッド getSelfInMod
を呼び出すと、getSelfInMod メソッド内の self は foo の参照先オブジェクトを参照します。

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

In This Thread