私はルビーのつるはしの本を読んでいる途中で、有理数を作成する構文について混乱しています。
Rational(3,4) * Rational(1,2)
を生成します
=> 3/8
new
メソッドが不要なのはなぜですかRational
(たとえば、新しいメソッドなしで文字列を作成できることにも気づきました)。
私はルビーのつるはしの本を読んでいる途中で、有理数を作成する構文について混乱しています。
Rational(3,4) * Rational(1,2)
を生成します
=> 3/8
new
メソッドが不要なのはなぜですかRational
(たとえば、新しいメソッドなしで文字列を作成できることにも気づきました)。
一つには、Rubyにはnew
キーワードがありません。new
は、すべてのクラスが持つ(から継承するClass
)クラスメソッドであり、そのクラスのオブジェクトを作成します。のようなものが表示された場合Rational(3,4)
、これは実際には(で定義された)Rational
のプライベートメソッドであり、有理数の作成を容易にします。これらのコンストラクターメソッドの詳細については、私のこの回答を参照してください:https ://stackoverflow.com/a/9677125/1008938Object
Kernel
これは、たまたまクラスと同じ名前のメソッドです。これは、Rubyの一般的な変換イディオムです。