0
Fixnum.methods.count #=> 99
3.methods.count #=> 131
如果他们有不同的方法,我猜他们是不完全一样的东西。Ruby中`Fixnum`和`3`有什么不同?
究竟有什么区别?
Ruby在引擎盖下发生了什么?
我使用红宝石2.2.1p85(2015年2月26日修订49769)。
Fixnum.methods.count #=> 99
3.methods.count #=> 131
如果他们有不同的方法,我猜他们是不完全一样的东西。Ruby中`Fixnum`和`3`有什么不同?
究竟有什么区别?
Ruby在引擎盖下发生了什么?
我使用红宝石2.2.1p85(2015年2月26日修订49769)。
正如@Aetherus说,Fixnum
是一个类的实例,所以Fixnum.methods
回报它的所有类的方法,而3.methods
将返回Fixnum
实例方法,因为3
是Fixnum
一个实例。
例如,基本的数学运算符是实例方法,如:+
,:-
等,所以Fixnum.respond_to?(:+)
返回false
。并且3.respond_to?(:class_variables)
返回false
,因为该方法是一个类方法,所以该类的实例无法访问它。
'3'是'Fixnum'的一个实例,而'Fixnum'是'Class'的一个实例。 – Aetherus
...和'Class'是'Class'的一个实例,'Class'是'Class'的一个实例,... –