Ruby中的“Fixnum”和“3”有什么区别?

时间:2016-09-23 01:24:25

标签: ruby

Fixnum.methods.count #=> 99
3.methods.count      #=> 131

如果他们有不同的方法,我猜他们不是完全一样的。

  1. 究竟有什么区别?

  2. Ruby的内幕是什么?

  3. 我正在使用 ruby​​ 2.2.1p85(2015-02-26修订版49769)

1 个答案:

答案 0 :(得分:1)

正如@Aetherus所说,Fixnum是一个类的实例,因此Fixnum.methods返回其所有类方法,而3.methods将返回Fixnum实例方法,因为3Fixnum的一个实例。

例如,基本数学运算符是实例方法,例如:+:-等,因此Fixnum.respond_to?(:+)返回false。并且3.respond_to?(:class_variables)返回false,因为该方法是一个类方法,因此该类的实例无法访问它。