Почему новый метод не нужен для создания Rational в ruby

Возможный дубликат:
Вопрос о синтаксисе Ruby: Rational(a, b) и Rational.new!(A, b)

Я нахожусь в процессе чтения рубиновой книги кирки, и я запутался в синтаксисе создания рациональных чисел.

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

производит

=> 3/8

Почему new метод не нужен для Rational (Я также заметил, например, я могу создать строку без нового метода)?

2 ответа

Решение

Во-первых, у Руби нет new ключевое слово. new это метод класса, который есть у всех классов (они наследуют его от Class), который создает объект этого класса. Когда вы видите что-то вроде Rational(3,4), Rational на самом деле просто частный метод Object (определено в Kernel) что делает создание рациональных чисел проще. Для получения дополнительной информации об этих методах конструктора см. Мой ответ: /questions/24375489/gde-nahoditsya-dokumentatsiya-dlya-array/24375500#24375500

Это метод, имя которого совпадает с именем класса. Это распространенная идиома в Ruby.

Другие вопросы по тегам