• ベストアンサー

Rubyに、クラスメソッドというものがありますが、どういう時に使うので

Rubyに、クラスメソッドというものがありますが、どういう時に使うのでしょうか?初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

  • LLR4
  • お礼率54% (12/22)
  • Ruby
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

インスタンスメソッドとするのにそぐわない機能だが、そのクラスの中で定義したい機能。 リファレンスマニュアルに出てくる実際の例を見ればわかると思います。

LLR4
質問者

補足

残念ながら、リファランスでは分りませんでした。簡単な例をあげていただけないでしょうか?

関連するQ&A

  • RubyのDateクラスのメソッドが見つからない

    先日よりRubyでのプログラミングを始めてみたのですが DateクラスのDate::MOTHNAMESを参照しようとしたところ undefined method `MOTHNAMES' for Date:Class (NoMethodError) と返ってきてしまいました。 ほかにもDate::exist?メソッドもためしてみましたが、同じ様なコメントが 返ってきました。 undefined method `exist?' for Date:Class (NoMethodError) なお、 Date.newなどはつかえています どういった問題でどのように解決すれば良いのか、ご教示願えればと思います。 バージョンは ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] で、Mac OSX Lionで動かしています。

  • Rubyのtimesメソッドから抜けたい

    Rubyの初心者です。 timesメソッドの中にif文を入れて,もし条件を満たしていれば timesメソッドから抜けたいのですが,どうすればいいのでしょうか。 if文の中でbreakしてもtimesメソッドからは抜けられなかったので質問しました。 どうかよろしくお願いします。

  • Ruby sortメソッド

    RubyのEnemuratableモジュール内で定義されているメソッドのひとつsort メソッドの使い方が良くわかりません。 ブロックや<=>演算子を用いて何か分かりやすい例はありますでしょうか?

  • どのクラスのメソッドか、をどう見極めるか。

    どのクラスのメソッドか、をどう見極めるか。 Java初心者です(教科書で学んで、実践はこれからというレベル)。 参考書やネット上の資料等に掲載されているコードを見ていますと、 import文(10文くらい)で沢山のパッケージをimportしているようなクラスを しばしば目にしますが、このようなクラス内で使われている沢山のメソッドは、 それぞれ、どこかのクラスに属しているメソッドであるかと思います。 これらのメソッドについて、その仕様を知りたいと感じた場合、 それらがそれぞれ、どのクラスに属するのかを突き止める必要があるかと思いますが、 その突き止め方について、どなたか教えて下さい。 (一般的に普及している方法で結構です。) 例えば、知りたいと感じたメソッド名をネット検索し、 そのメソッドが「Javaの組み込みクラス」のメソッドである場合には、 ネット検索でヒットするでしょうから、その検索結果を受けて、 そのヒットしたクラスと、import文の内容とを比較し、 ネット検索でヒットしたクラスが、そのメソッドの格納主であると確信できれば、 それをもとに、そのメソッドの仕様を知ることができますよね。 (自作・他作のメソッドと、名前がバッティングしているかもしれないことを考慮すると、 やや頭が痛くなる問題になりませんか?) ネット検索で辿る方法が、まず頭に浮かびましたが、 これよりも効率的な方法がもし何かありましたら、教えて下さい。 ただ、一方で、 仕様を知りたいと思っているメソッドが、 「Javaの組み込みクラス」のメソッドではなく、 自作(もしくは、他作)のメソッドであった場合、 検索してもヒットはしませんから、その場合には、 import文にある自作もしくは他作のパッケージをしらみつぶしで探していくことになるのでしょうか? 当然、そのメソッドは、同一パッケージ内にあるクラスのpublicメソッドである可能性もありますから、 同一パッケージ内のクラスの中も、しらみつぶしに探していくことになりますよね? 各メソッドがコメントで「○○クラスのメソッド」というように注意書きされてあれば、 このような苦労はないのでしょうが、ネット上のソースを見る限りでは、 そんな親切なコメントはまず期待できないように思います。 以上、まとまりのない質問ではありますが、アドバイスを宜しくお願い致します。 自分のこの疑問が見当違いの疑問でしたら、その時は、ズバリそれを指摘して下さい。

    • ベストアンサー
    • Java
  • rubyのメソッドについて

    Ruby初心者(オブジェクト指向はわかります)なのですが、メソッドについてわからないことがあって質問させていただきました。 Net::SMTP.start('smtp.example.com', 25) {|smtp| smtp.send_message(<<-EndOfMail, 'from@example.com', 'to@example.net') From: Your Name <from@example.com> To: Dest Address <to@example.net> Subject: test mail Date: Sat, 23 Jun 2001 16:26:43 +0900 Message-Id: <unique.message.id.string@yourhost.example.com> This is a test mail. EndOfMail } このプログラムの意味を理解しようとしているのですが、どうもわかりません。 私の現在の認識を説明させていただくと、 1)NetクラスのインナークラスであるSMTPクラスのstartメソッドを呼び出している。 2)('smtp.example.com', 25)これはstartメソッドの引数である。 3)|smtp|よくわからない。このstartメソッドの戻り値?startメソッドの中なのに? 4)From: Your Name <from@example.com> ここもよくわからない。なぜ急に変数にも代入しない 文字列を書いたのか? 以上が私の現在の認識と疑問点です。 疑問点はもちろん、認識している点も誤って認識している点があればご指摘いただけると幸いです。

    • ベストアンサー
    • Ruby
  • Rubyのsuperclassメソッドについて

    Rubyについての質問です。処理系は1.8.7です。 class Foo def initialize(a) @a = a end end のようなクラスを作成し、そのインスタンスを foo = Foo.new(1) のように作成します。 このとき、 foo.superclassを呼び出すと NoMethodError: undefined method `ancestors' for #<Foo:0x2b691220cc88 @a=1> とエラーになります。 一方で class FooExt < Foo def initialize (a,b) @b = b super a end end のようにFooを継承したクラスを作り、 fooext = FooExt.new(1,2) fooext.superclass とすると => Foo とsuperclassメソッドが動作します。 このsuperclassメソッドはどこで追加されたものなのでしょうか?

  • Rubyのcloneメソッドの使い方を教えてください。

    Rubyのcloneメソッドの使い方を教えてください。 str=”tora" str2 = str.clone str= "usagi" str2 #=>"usagi" だと思っていたのですが、違うようです。 よろしくお願いいたします。

  • 【ruby】【文法】スパークラスのスーパークラスのメソッドを呼び出したい

    スパークラスのスーパークラスのメソッドを呼び出したいです。 たとえば、Hoge3のスーパークラスがHoge2で、さらにそのスーパークラス がHogeの時、Hoge3からHogeのメソッドを呼び出したいのです。 もう少し具体的に説明させてもらいます。 class Hoge  def initialize()   @name='hoge'  end end class Hoge2 < Hoge  def initialize()   super   @name='hogehoge'  end end class Hoge3 < Hoge2  def initialize()   super #これではスーパークラスHoge2のメソッドが呼ばれてしまう。   puts @name  end Hoge3.new() 上記実行結果は、hogehogeが出力ですが、 スーパークラスのスーパークラスが設定した@name値、 'hoge'が出力されるようにしたいです。 『Hoge3クラスはHoge2クラスを継承すればよいではないか?』 とも思うでしょうが、Hoge2クラスには、Hogeには無い機能が多く拡張されてると考えてください。 ご指導のほど、宜しくお願いいたします。

  • クラス変数とクラスメソッドを教えてください

    みんさんどうもすみません。クラス変数とクラスメソッドなんですが、 何回本を読んでもイマイチ理解できません。クラス変数とクラスメソッド を使うことでなにがメリットなのか教えてください。例えばクラスメソッド の場合はメソッド名の前にオブジェクト名をつけなくていいとか、そういう 便利さのために使うんでしょうか?どうもまだ完全に理解できていないの で詳しい方いらっしゃったらどうか教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • 別クラスのメソッドの呼び出し

    どうしても期待した値が取れず、バイナリが返ってきてしまいます。 簡単な内容なので申し訳ないのですが書き方を教えて下さい。 下記内容です。↓ クラス01にmainメソッドを作成。 そこに「一」「二」「三」を格納する変数を宣言。 クラス02にpublic以外のメソッドを作成。 そこで「一」「二」「三」を引数として受け取り、その3つを「+」以外で文字列連結する。 クラス01のmainメソッドから、クラス02のメソッドを呼び出し、最後にSystem.out.printlnで戻ってきた文字列を出力。 ソース貼っておらず申し訳ないのですが宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう