2012-06-27 6 views
5

可能性の重複:
Ruby syntax question: Rational(a, b) and Rational.new!(a, b)はなぜ新しい方法は、Rubyで合理的な作成するために必要とされていない

私はルビーのつるはしの本を読んでのプロセスにいるよ、と私は有理数を作成する構文について混乱しています。 Rationalためnew方法必要とされていないのはなぜ

Rational(3,4) * Rational(1,2) 

=> 3/8 

を生成し(また、私は新しいメソッドなしで文字列を作成することができ、たとえば気づい)?

+1

これはメソッドなので、 –

+1

ああ、私はその重複を見ませんでした。あなたは正しいです。 –

答えて

6

Rubyにはnewというキーワードがありません。 newは、そのクラスのオブジェクトを作成するすべてのクラス(Classから継承したもの)を持つクラスメソッドです。 Rational(3,4)のようなものを見ると、Rationalは実際にはObjectのプライベートメソッド(Kernelで定義されています)によって、有理数の作成が容易になります。これらのコンストラクタメソッドの詳細については、この回答を参照してください。https://stackoverflow.com/a/9677125/1008938

+0

ありがとう、私は新しい方法を意味して申し訳ありません。 –

+0

@ジェフストーリー:ああ。しかし、答えの残りの部分はまだ成立しています。そしてそのリンクを見てください。 – Linuxios

+0

はい、ありがとうございます。 –

3

このメソッドは、クラスと同じ名前を持つことがあります。 Rubyでは一般的にconversion idiomです。

+1

ありがとうございます。構文を学ぶのではなく、私が学んでいるように、これらの共通のルビーのイディオムを拾うのは良いことです。 –