|
View:
New views
20 Messages
—
Rating Filter:
Alert me
|
| < Prev | 1 - 2 - 3 - 4 | Next > |
|
|
[ruby-list:46291] Re: rubyの変数の扱いについて前川です。
坂口さん ありがとうございます。 Tetsuo Sakaguchi <saka@...> wrote on 2009/08/17 17:20:33: > 阪口と申します。途中からで失礼します。 > (色々と識者からもフォローがあると思いますが。) > In message <OFAA4C06FA.293AAD32-ON49257615.002B095C-49257615. > 002CA7FE@...> 2009-08-17T17:07+0900, > 前川 映一 <eiichi_maekawa@...> wrote: > > C#では、このようなことを回避するために、 > > int a のような記述(aをintegerとして宣言する)ができたのですが、 > > このような記述は、rubyにもあると思いますが、どのように記述すればよいで しょ > > うか? > > また、string b ="" のような記述は出来ないのでしょうか? > その辺は「プログラミング言語設計上の理念」の違いですね。 > C#のような言語は必要な変数は宣言してから使い、その際にどのデータ型かも > 指定するという設計になっていますが、 確かに、そのとおりですね。基本を忘れていました。 > Ruby は変数の宣言をするための専用の構文はない、という設計になっています。 > その代わりに Ruby では「最初の代入文」が宣言を兼ねることになっています。 > (これ、実は正確な表現ではないと思いますが、簡単に書いておきます。) > また、変数は特定の型を持たないという設計にもなっています。 rubyの基本ですね、本を読んで理解したつもりでしたが、昔の癖で、 型宣言がいるはずだと思い込んでいました。 > なので、「string b = ""」と書かずに「b = ""」と書けば良いわけですね。 ありがとうございました。 |
|
|
[ruby-list:46295] Re: [ruby-list:46284 ]_Re:_rubyの変数の扱いについてA.中村です。
前川 映一 さんは書きました: > ということは、aは、定まった型はなく、 > 入る初期値で、aの型は決まるということですね。 いえ、「決まりません」が答えです。(のはず) #初期値で「決まる」のだとすれば、「a = 1」した瞬間に型エラーで落ちるは ずですよね? #でも落ちないのがRubyです。 Rubyは、 「変数には」型が無く、 そのかわり(?)に、 変数に代入される「値(ぶっちゃけObject)には」型が有る、 というスタイルになってるようです。 ちなむとRuby、 「値に型が有る」ほうについては結構厳格な感じです。 ほかの動的言語だと時として、 値のほうも状況に応じて「勝手に」型変換されたりする奴がいますが、 (個人的に思い出深いのがAWKとBASICかなー) Rubyはそういう場面は無いみたいなんで。 |
|
|
[ruby-list:46296] Re: [ruby-list:46284 ]_Re:_rubyの変数の扱いについて前川さんへ
岡田と申します。 最初は不思議に思いますが、補足すると Ruby では代入は特別な操作で a = 1 というのは a という変数名にたいする操作です。 (ですから再定義できません) a + 1 というのは a に入っているオブジェクトに対する演算です。 ( + 演算子は再定義できます) a += 1 はa = a + 1 の単なるシンタックスシュガーです。 |
|
|
[ruby-list:46297] 「Re: [ruby-list:46295 ]」Re__rubyの変数の扱いについてA.中村さん ありがとうございました。
> > 入る初期値で、aの型は決まるということですね。 > いえ、「決まりません」が答えです。(のはず) > #初期値で「決まる」のだとすれば、「a = 1」した瞬間に型エラーで落ちるは > ずですよね? > #でも落ちないのがRubyです。 ふむふむ。。。そうですね。 > Rubyは、 > 「変数には」型が無く、 > そのかわり(?)に、 > 変数に代入される「値(ぶっちゃけObject)には」型が有る、 > というスタイルになってるようです。 確かに、objectには、型ありますね。 ありがとうございました。 |
|
|
[ruby-list:46298] Re: [ruby-list:46296 ] Re: [ruby-list:46284 ]_Re:_rubyの変数の扱いについて岡田さん
ありがとうございます。 > 岡田と申します。 > 最初は不思議に思いますが、補足すると > Ruby では代入は特別な操作で a = 1 というのは a という変数名にたいす > る操作です。 > (ですから再定義できません) > a + 1 というのは a に入っているオブジェクトに対する演算です。 > ( + 演算子は再定義できます) > a += 1 はa = a + 1 の単なるシンタックスシュガーです。 ということは、 a = 1 =>a に 1を代入する a = 'a' は a に aに、aという文字を代入する a = a + 1 は、 aの'a'と1を + で実行するが、型が違うためエラー ということですね。 色々試してみます。 ありがとうございました。 |
|
|
[ruby-list:46299] Re: rubyの変数の扱いについて池澤といいます。
On Mon, 17 Aug 2009 16:29:43 +0900 "前川 映一" <eiichi_maekawa@...> さんwrites: --略-- > a = a + i > undefined method `+' for nil:NilClass (NoMethodError) > Complete(1) エラーとなります。 > --略-- 「プログラミングRuby」(ISBN978-4-87311-394-4) P91 には | 4.2 変数参照 | 変数とは、単純に値につけられた名前のことである。変数を作成するのは代入式で、 |このときに値も代入される。..(以下略) と書いてあります。 Rubyリファレンスマニュアルの「変数」のページには v = 1 if false というおもしろい例があげられています。 http://www.ruby-lang.org/ja/man/html/ で、やってみました。 C:\>ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] C:\>irb --simple-prompt >> v = 1 if false => nil >> defined?(v) => "local-variable" >> v.class => NilClass # # じゃこういうのはどうかな? >> x = x + 1 NoMethodError: undefined method `+' for nil:NilClass # NilClassのnilに'+'というメソッドは定義されていない・・ # # x の定義自体は成功してるということか? >> defined?(x) => "local-variable" >> x.class => NilClass # なるほど # じゃこういうのはいけるのかな? >> y = y.to_i + 1 => 1 # おっ! >> defined?(y) => "local-variable" >> y.class => Fixnum # こんなのもいけるかな? >> var = var => nil >> defined?(var) => "local-variable" >> var.class => NilClass # なるほど |
|
|
[ruby-list:46300] Re: [ruby-list:46299 ] Re: rubyの変数の扱いについて池澤さん
下記、ありがとうございます。 参考にさせていたただきます。m(_ _)m ikezawa@... (ikezawa) wrote on 2009/08/19 10:04:43: > 池澤といいます。 > On Mon, 17 Aug 2009 16:29:43 +0900 > "前川 映一" <eiichi_maekawa@...> さんwrites: > --略-- > > a = a + i > > undefined method `+' for nil:NilClass (NoMethodError) > > Complete(1) エラーとなります。 > > > --略-- > 「プログラミングRuby」(ISBN978-4-87311-394-4) P91 には > | 4.2 変数参照 > | 変数とは、単純に値につけられた名前のことである。変数を作成するの > は代入式で、 > |このときに値も代入される。..(以下略) > と書いてあります。 > Rubyリファレンスマニュアルの「変数」のページには > v = 1 if false > というおもしろい例があげられています。 > http://www.ruby-lang.org/ja/man/html/ > で、やってみました。 > C:\>ruby -v > ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] > C:\>irb --simple-prompt > >> v = 1 if false > => nil > >> defined?(v) > => "local-variable" > >> v.class > => NilClass > # > # じゃこういうのはどうかな? > >> x = x + 1 > NoMethodError: undefined method `+' for nil:NilClass > # NilClassのnilに'+'というメソッドは定義されていない・・ > # > # x の定義自体は成功してるということか? > >> defined?(x) > => "local-variable" > >> x.class > => NilClass > # なるほど > # じゃこういうのはいけるのかな? > >> y = y.to_i + 1 > => 1 > # おっ! > >> defined?(y) > => "local-variable" > >> y.class > => Fixnum > # こんなのもいけるかな? > >> var = var > => nil > >> defined?(var) > => "local-variable" > >> var.class > => NilClass > # なるほど |
|
|
[ruby-list:46302] rubyのクラス内のメソッドの使用について前川です。
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 と記述するのでしょうか? 上記コーディングで、動作は確認出来ましたが、 同じクラス内にあるのに、なぜ、クラス名を指定するのかか (私の理解力不足です。)いまいち、納得できていません。 ご指導、よろしくお願いします。 了 |
|
|
[ruby-list:46303] rubyのメソッドの切り替えについて前川です。
def test( a,b,c) #パターン1 〜処理〜 end def test( a,b,c,d ) #パターン2 〜処理〜 end cc = test( a,b,c ) dd = test( a,b,c,d ) ee = cc + dd とした場合、同じ名称でも引数が異なるため、 別々のメソッドとして、扱えるのでしょうか? (名称が同じ場合は、ため、解析する時点で、 重複エラーとしてはじかれるようです。) もっとも、上記のようなコードを作るほうが おかしいとは思いますが・・・・ (マイクロソフト C# では、別メソッドとして 認識されていました。) よろしくお願いします。 了 |
|
|
[ruby-list:46304] Re: rubyのメソッドの切り替えについて成瀬です。
まず、新しい話題を既存のメールに対して返信で始めるのはやめてください。 新しい話題の場合はruby-list@ruby-lang.orgに、 新規にメールを送るようにしてください。 2009/08/20 15:46, 前川 映一 wrote: > とした場合、同じ名称でも引数が異なるため、 > 別々のメソッドとして、扱えるのでしょうか? > > (名称が同じ場合は、ため、解析する時点で、 > 重複エラーとしてはじかれるようです。) > > もっとも、上記のようなコードを作るほうが > おかしいとは思いますが・・・・ > (マイクロソフト C# では、別メソッドとして > 認識されていました。) Rubyにはメソッドオーバーロードはありません。 -- NARUSE, Yui <naruse@...> |
|
|
[ruby-list:46305] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについて成瀬さん
早速のご連絡、ありがとうございます。 > 成瀬です。 > まず、新しい話題を既存のメールに対して返信で始めるのはやめてください。 > 新しい話題の場合はruby-list@ruby-lang.orgに、 > 新規にメールを送るようにしてください。 ;;以前作成したメールをコピーして利用しているのですが・・・ 以後、気をつけます。 送信したメールでは、既存のメールかどうかは、わからないのですが、 何が、残ってるのですか?? > 2009/08/20 15:46, 前川 映一 wrote: > > とした場合、同じ名称でも引数が異なるため、 > > 別々のメソッドとして、扱えるのでしょうか? > > > Rubyにはメソッドオーバーロードはありません。 了解しました。 ありがとうございました。 |
|
|
[ruby-list:46306] Re: rubyのメソッドの切り替えについてFrom: "前川 映一" <eiichi_maekawa@...>
Subject: [ruby-list:46303] rubyのメソッドの切り替えについて Date: Thu, 20 Aug 2009 15:46:54 +0900 るびきちです。 > def test( a,b,c) #パターン1 > 〜処理〜 > end > > def test( a,b,c,d ) #パターン2 > 〜処理〜 > end > > cc = test( a,b,c ) > dd = test( a,b,c,d ) > > ee = cc + dd > > とした場合、同じ名称でも引数が異なるため、 > 別々のメソッドとして、扱えるのでしょうか? 無理です。可変長引数や省略可能引数で代用しましょう。 同じ名前のメソッドである以上、なんらかの関連性があるはずです。 # このサンプルは恣意的なものです:-) def test(a, b, c, d=nil) if d # 4引数の場合 a+b+c+d else a*b*c end end cc = test(1, 2, 3) # => 6 dd = test(1, 2, 3, 4) # => 10 ee = cc + dd # => 16 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/ Twit: http://twitter.com/rubikitch/ 『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook |
|
|
[ruby-list:46307] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについてIn message <OF7C440FD2.0D92E9D3-ON49257618.0027B6B7-49257618.002803EC@...> 2009-08-20T16:17+0900,
前川 映一 <eiichi_maekawa@...> wrote: > ;;以前作成したメールをコピーして利用しているのですが・・・ > 以後、気をつけます。 > 送信したメールでは、既存のメールかどうかは、わからないのですが、 > 何が、残ってるのですか?? ヘッダに In-Reply-To が付与されており、返信として出したことになっています。 なので、貴方がお使いの MUA での具体的な操作はわかりませんが、 「新規メール作成」のようなものを使ってない(「返信」などを使っている) のではないかと推測できるわけです。 ruby-list@... をアドレス帳にでも登録して、 新規メール作成(相当)で出して下さいということです。 以下は蛇足です。(けど、こっちがむしろ本質?、でも直接的ではないので。) > > > とした場合、同じ名称でも引数が異なるため、 > > > 別々のメソッドとして、扱えるのでしょうか? > > > > > > Rubyにはメソッドオーバーロードはありません。 > > 了解しました。 オーバーロードというよりはむしろ 何を用いてメソッドセレクション(メソッドバインディング)するかは プログラミング言語毎に異なるわけで、 レシーバ(のクラス)とメソッド名だけで行うものから、 メソッドの引数パターンを使うものまで色々あるということです。 これまでの前川さんの質問を見ると、他の言語のようなことができないかという主旨 のことが目立つような気がしますが、それぞれの言語で固有の部分というのがあるから プログラミング言語には様々なものがあるということをお忘れなく。 (時間に余裕があれば、Smalltalk-80やCommon Lisp のCLOSなどと比較しても 面白いと思いますけどね。) -- 阪口哲男@図書館情報メディア研究科.大学院.筑波大学 Tetsuo SAKAGUCHI. Graduate School of Library, Information and Media Studies University of Tsukuba, JAPAN. |
|
|
[ruby-list:46308] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについて坂口さん ありがとうございます。 > 002803EC@...> 2009-08-20T16:17+0900, > 前川 映一 <eiichi_maekawa@...> wrote: > > ;;以前作成したメールをコピーして利用しているのですが・・・ > > 以後、気をつけます。 > > 送信したメールでは、既存のメールかどうかは、わからないのですが、 > > 何が、残ってるのですか?? > ヘッダに In-Reply-To が付与されており、返信として出したことになっていま す。 > なので、貴方がお使いの MUA での具体的な操作はわかりませんが、 > 「新規メール作成」のようなものを使ってない(「返信」などを使っている) > のではないかと推測できるわけです。 知りませんでした。以後、注意します。 > ruby-list@... をアドレス帳にでも登録して、 > 新規メール作成(相当)で出して下さいということです。 メールツールは、IBMのNOTESを使用している関係で、送信者と件名のみ (知らないだけかもしれませんが)となっているため、気づきませんでした。 > 以下は蛇足です。(けど、こっちがむしろ本質?、でも直接的ではないので。) > > > > とした場合、同じ名称でも引数が異なるため、 > > > > 別々のメソッドとして、扱えるのでしょうか? > > > > > > > > > Rubyにはメソッドオーバーロードはありません。 > > > > 了解しました。 > オーバーロードというよりはむしろ > 何を用いてメソッドセレクション(メソッドバインディング)するかは > プログラミング言語毎に異なるわけで、 > レシーバ(のクラス)とメソッド名だけで行うものから、 > メソッドの引数パターンを使うものまで色々あるということです。 > これまでの前川さんの質問を見ると、他の言語のようなことができないかという 主旨 > のことが目立つような気がしますが、それれぞれの言語で固有の部分というのがあ るから > プログラミング言語には様々なものがあるということをお忘れなく。 > (時間に余裕があれば、Smalltalk-80やCommon Lisp のCLOSなどと比較しても > 面白いと思いますけどね。) たしかに、以前使用していた言語の経験をrubyで出来ないかと 考えている部分があります。注意するようにします。 ご指摘、ありがとうございました。 まだまだ、駆け出しですので、ご指導、よろしくお願いします。 了 |
|
|
[ruby-list:46309] Re: rubyのメソッドの切り替えについて前川です。
るびきちさん ありがとうございます。 rubikitch@... wrote on 2009/08/20 16:24:26: > From: "前川 映一" <eiichi_maekawa@...> > Subject: [ruby-list:46303] rubyのメソッドの切り替えについて > Date: Thu, 20 Aug 2009 15:46:54 +0900 > るびきちです。 > > def test( a,b,c) #パターン1 > > 〜処理〜 > > end > > > > def test( a,b,c,d ) #パターン2 > > 〜処理〜 > > end > > > > cc = test( a,b,c ) > > dd = test( a,b,c,d ) > > > > ee = cc + dd > > > > とした場合、同じ名称でも引数が異なるため、 > > 別々のメソッドとして、扱えるのでしょうか? > 無理です。可変長引数や省略可能引数で代用しましょう。 > 同じ名前のメソッドである以上、なんらかの関連性があるはずです。 > > # このサンプルは恣意的なものです:-) > def test(a, b, c, d=nil) > if d # 4引数の場合 > a+b+c+d > else > a*b*c > end > end > cc = test(1, 2, 3) # => 6 > dd = test(1, 2, 3, 4) # => 10 > ee = cc + dd # => 16 変数分を確保し、データが設定された場合に、 追加の変数による処理を記述することで、対応出来るのは わかるんですが・・・ 言語の特徴の違いを認識し、今後の作業に活かさせてもらいます。 ありがとうございました。 |
|
|
[ruby-list:46310] Re: rubyのクラス内のメソッドの使用について 小西 弘将です。
こったやり方もあるでしょうが、別解はこんな感じでしょうか? 自分の趣味では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 #----------------------------------- #----------------------------------- 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 と記述するのでしょうか? > >上記コーディングで、動作は確認出来ましたが、 >同じクラス内にあるのに、なぜ、クラス名を指定するのか >(私の理解力不足です。)いまいち、納得できていません。 > >ご指導、よろしくお願いします。 > >了 > 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 株式会社レアックス 地質部 小西 弘将 TEL 011-780-2481 FAX 011-780-2488 E-mail : konishi@... URL : http://www.raax.co.jp/ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 |
|
|
[ruby-list:46311] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについて出沢です
From: Tetsuo Sakaguchi <saka@...> Subject: [ruby-list:46307] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについて Date: Thu, 20 Aug 2009 16:30:42 +0900 > In message <OF7C440FD2.0D92E9D3-ON49257618.0027B6B7-49257618.002803EC@...> 2009-08-20T16:17+0900, > 前川 映一 <eiichi_maekawa@...> wrote: > > ;;以前作成したメールをコピーして利用しているのですが・・・ > > 以後、気をつけます。 > > 送信したメールでは、既存のメールかどうかは、わからないのですが、 > > 何が、残ってるのですか?? > > ヘッダに In-Reply-To が付与されており、返信として出したことになっています。 > なので、貴方がお使いの MUA での具体的な操作はわかりませんが、 > 「新規メール作成」のようなものを使ってない(「返信」などを使っている) > のではないかと推測できるわけです。 補足します これがあると、In-Reply-To: に対する返信ということがわかるので、 スレッドでメ−ル一覧を表示するメ−ルツ−ルは 1084 08/20 "前川 映一" <e [ruby-list:46303] rubyのメソッドの切り替えについて <OF92468372.0A93C9F7-ON49257618.00245D7C-49257618.00253EF7@...> <OFBEFCD40B.001E7889-ON492575EA.007CE7AA-492575EA.007DC049@...> +ML 1084 1085 08/20 "NARUSE, Yui" [ruby-list:46304] Re: rubyのメソッドの切り替えについて <4A8CF64D.1030102@...> <OF92468372.0A93C9F7-ON49257618.00245D7C-49257618.00253EF7@...> +ML 1085 1086 08/20 "前川 映一" <e [ruby-list:46305] Re: [ruby-list:46304 ] Re: rubyの という様な表示をしてくれます。 新しい投稿がこのなかに混じるとややこしくなるわけです。 前川さんは Notesをお使いのようですからこれらのヘッダ−は普段目にしないと 思います。 メ−ル文書のプロバティを開き、フィ−ルドのTab(三角定規のマ−ク)で In_Reply_To を探してみて下さい。 Notesでは ビュ−をディスカッション型式で <OF7C440FD2.0D92E9D3-ON49257618.0027B6B7-49257618.002803EC@...> <4A8CF64D.1030102@...+ML スレッド表示出来ます。 私も面倒なので 返信でメ−ルを作成して、これらのヘッダ−を削除してから送信 というのを良くやりますが、Notes では出来ない技ですので、新規メ−ルから やって下さい。 |
|
|
[ruby-list:46312] Re: [ruby-list:46311 ] Re: [ruby-list:46304 ] Re: rubyのメソッドの切り替えについて出沢さん
ご丁寧な説明、ありがとうございます。 新規で作成します。 > 補足します > これがあると、In-Reply-To: に対する返信ということがわかるので、 > スレッドでメ−ル一覧を表示するメ−ルツ−ルは > 1084 08/20 "前川 映一" <e [ruby-list:46303] rubyのメソッドの切り替え > について <OF92468372.0A93C9F7-ON49257618.00245D7C-49257618. > 00253EF7@...> <OFBEFCD40B.001E7889-ON492575EA. > 007CE7AA-492575EA.007DC049@...> |
|
|
[ruby-list:46313] Re: [ruby-list:46310 ] Re: rubyのクラス内のメソッドの使用について前川です。
小西さん、ありがとうございました。 参考にさせていただきます。 小西 弘将 <konishi@...> 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 と記述するのでしょうか? > > > >上記コーディングで、動作は確認出来ましたが、 > >同じクラス内にあるのに、なぜ、クラス名を指定するのか > >(私の理解力不足です。)いまいち、納得できていません。 > > > >ご指導、よろしくお願いします。 > > > >了 > > |
|
|
[ruby-list:46314] Re: rubyのクラス内のメソッドの使用についてFrom: "前川 映一" <eiichi_maekawa@...>
Subject: [ruby-list:46302] rubyのクラス内のメソッドの使用について Date: Thu, 20 Aug 2009 15:27:19 +0900 るびきちです。 > class Test1 > > def self.test_text( abc ) > (snip) > end > > def self. test_abc( cde ) > (snip) > end > > def self.test_add( dddd ) > a = Test1.test_text("abcd") > b = Test1.test_abc("efgh") > c = dddd > e = a + b + c > end > > end どれもクラスメソッドなので 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 end dd = Test1.test_add( "12345" ) puts dd # >> abcd # >> efgh # >> abcdefgh12345 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/ Twit: http://twitter.com/rubikitch/ 『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook |
| < Prev | 1 - 2 - 3 - 4 | Next > |
| Free embeddable forum powered by Nabble | Forum Help |