5

重複の可能性:
Ruby構文の質問:Rational(a、b)およびRational.new!(a、b)

私はルビーのつるはしの本を読んでいる途中で、有理数を作成する構文について混乱しています。

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

を生成します

=> 3/8

newメソッドが不要なのはなぜですかRational(たとえば、新しいメソッドなしで文字列を作成できることにも気づきました)。

4

2 に答える 2

6

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

于 2012-06-27T00:36:14.927 に答える
3

これは、たまたまクラスと同じ名前のメソッドです。これは、Rubyの一般的な変換イディオムです。

于 2012-06-27T00:36:07.773 に答える