Fixnum.methods.count #=> 99
3.methods.count #=> 131
如果他们有不同的方法,我猜他们不是完全一样的。
究竟有什么区别?
Ruby的内幕是什么?
我正在使用 ruby 2.2.1p85(2015-02-26修订版49769)。
答案 0 :(得分:1)
正如@Aetherus所说,Fixnum
是一个类的实例,因此Fixnum.methods
返回其所有类方法,而3.methods
将返回Fixnum
实例方法,因为3
是Fixnum
的一个实例。
例如,基本数学运算符是实例方法,例如:+
,:-
等,因此Fixnum.respond_to?(:+)
返回false
。并且3.respond_to?(:class_variables)
返回false
,因为该方法是一个类方法,因此该类的实例无法访问它。