[ruby-list:46143] るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果

View: New views
2 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 - 3 - 4 | Next >

[ruby-list:46315] Re: rubyのクラス内のメソッドの使用について

by Nobuyoshi Nakada-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

なかだです。

At Thu, 20 Aug 2009 15:27:19 +0900,
前川 映一 wrote in [ruby-list:46302]:
> 上記サンプルコードで、Test1クラスにある
> test_add は、クラス内のtest_text と、
> test_abc を使用していますが、
> クラス内のメソッドを使用する場合でも、
> クラス名 Test1.test_add と記述するのでしょうか?

いずれもTest1の特異メソッドですから、Test1しか扱わないのであれば
test_add内ではTest1.をつける必要はありません。違いが出るのは、
Test1を継承したクラスに対してtest_addを呼ぶ場合です。Test1.とレ
シーバが明示されていれば、selfがなんであろうとTest1.test_textな
どが呼ばれます。指定していなければ、Test1から継承したにせよサブ
クラスでオーバーライドしたにせよ、selfの持つtest_textが呼ばれま
す。意味が変わりますので目的に応じて使い分けてください。

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦


[ruby-list:46319] Re: [ruby-list:46315 ] [ruby-list:46314 ] Re: rubyのクラス内のメソッドの使用について

by 前川 映一 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

るびきちさん、中田さん
ありがとうございました。

> どれもクラスメソッドなので Test1 を指定する必要はありません。

> さらにRubyはメソッドの最後に評価した値が自動的に返り値になるので、
> 最後のreturnは省いておきました。

> class Test1

> def self.test_text( abc )
> puts abc
> abc
> end

> def self.test_abc( cde )
> puts cde
> cde
> end

> def self.test_add( dddd )
> a = test_text("abcd")
> b = test_abc("efgh")
> c = dddd
> e = a + b + c
> end
よくわかりました。スッキリしました。
−−−−−−−−−−−−−−−−−−−−−−−−−
> なかだです。

> At Thu, 20 Aug 2009 15:27:19 +0900,
> 前川 映一 wrote in [ruby-list:46302]:
> > 上記サンプルコードで、Test1クラスにある
> > test_add は、クラス内のtest_text と、
> > test_abc を使用していますが、
> > クラス内のメソッドを使用する場合でも、
> > クラス名 Test1.test_add と記述するのでしょうか?

> いずれもTest1の特異メソッドですから、Test1しか扱わないのであれば
> test_add内ではTest1.をつける必要はありません。違いが出るのは、
> Test1を継承したクラスに対してtest_addを呼ぶ場合です。Test1.とレ
> シーバが明示されていれば、selfがなんであろうとTest1.test_textな
> どが呼ばれます。指定していなければ、Test1から継承したにせよサブ
> クラスでオーバーライドしたにせよ、selfの持つtest_textが呼ばれま
> す。意味が変わりますので目的に応じて使い分けてください。

なかださん ありがとうございました。


< Prev | 1 - 2 - 3 - 4 | Next >