[ruby-list:46313] Re: [ruby-list:46310 ] Re: rubyのクラス内のメソッドの使用について
From:
"前川 映一" <eiichi_maekawa@...>
Date:
2009-08-20 08:57:25 UTC
List:
ruby-list #46313
前川です。
小西さん、ありがとうございました。
参考にさせていただきます。
小西 弘将 <konishi@raax.co.jp> wrote on 2009/08/20 17:13:22:
> 小西 弘将です。
> こったやり方もあるでしょうが、別解はこんな感じでしょうか?
> 自分の趣味では2を取ると思います。
> オブジェクトをやたら作りたくなかったらシングルトンにするのかなぁ。
> #-----------------------------------
> class Test2
> def test_text( abc )
> puts abc
> return abc
> end
> def test_abc( cde )
> puts cde
> return cde
> end
> def test_add( dddd )
> a = test_text("abcd")
> b = test_abc("efgh")
> c = dddd
> e = a + b + c
> end
> end
> t2 = Test2.new
> dd2 = t2.test_add( "12345" )
> puts dd2
> #-----------------------------------
この場合は、Test2.newでまとめてしまうのですね。
(乱暴な言い方ですが、他に思いつきませんので・・・)
module Test3以降は、moduleを使ったことが
ないので、確認します。
> #-----------------------------------
> module Test3
> def test_text( abc )
> puts abc
> return abc
> end
> def test_abc( cde )
> puts cde
> return cde
> end
> def test_add( dddd )
> a = test_text("abcd")
> b = test_abc("efgh")
> c = dddd
> e = a + b + c
> end
> module_function :test_text, :test_abc, :test_add
> end
> dd3 = Test3.test_add( "12345" )
> puts dd3
> #-----------------------------------
> #-----------------------------------
> module Test4
> class TestSub
> def text( abc )
> puts abc
> return abc
> end
> def abc( cde )
> puts cde
> return cde
> end
> end
>
> def test_add( dddd )
> obj = TestSub.new
> a = obj.text("abcd")
> b = obj.abc("efgh")
> c = dddd
> e = a + b + c
> end
> module_function :test_add
> end
> dd4 = Test4.test_add( "12345" )
> puts dd4
> #-----------------------------------
> >前川です。
> >
> >class Test1
> >
> > def self.test_text( abc )
> > puts abc
> > return abc
> > end
> >
> > def self. test_abc( cde )
> > puts cde
> > return cde
> > end
> >
> > def self.test_add( dddd )
> > a = Test1.test_text("abcd")
> > b = Test1.test_abc("efgh")
> > c = dddd
> > e = a + b + c
> > end
> >
> >end
> >
> >dd = Test1.test_add( "12345" )
> >puts dd
> >
> >上記サンプルコードで、Test1クラスにある
> >test_add は、クラス内のtest_text と、
> >test_abc を使用していますが、
> >クラス内のメソッドを使用する場合でも、
> >クラス名 Test1.test_add と記述するのでしょうか?
> >
> >上記コーディングで、動作は確認出来ましたが、
> >同じクラス内にあるのに、なぜ、クラス名を指定するのか
> >(私の理解力不足です。)いまいち、納得できていません。
> >
> >ご指導、よろしくお願いします。
> >
> >了
> >