我正在阅读红宝石镐书,我对创建有理数的语法感到困惑。
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
实际上只是Object
(定义在Kernel
)的一个私有方法,它使得创建有理数更容易。有关这些构造方法的更多信息,请参阅我的答案:https ://stackoverflow.com/a/9677125/1008938
这是一个恰好与类同名的方法。这是 Ruby 中常见的转换习语。