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实际上只是Object(定义在Kernel)的一个私有方法,它使得创建有理数更容易。有关这些构造方法的更多信息,请参阅我的答案:https ://stackoverflow.com/a/9677125/1008938

于 2012-06-27T00:36:14.927 回答
3

这是一个恰好与类同名的方法。这是 Ruby 中常见的转换习语

于 2012-06-27T00:36:07.773 回答