2016-09-23 8 views
0
Fixnum.methods.count #=> 99 
3.methods.count  #=> 131 

これらのメソッドに異なるメソッドがある場合、それらはまったく同じものではないと思います。Rubyの `Fixnum`と` 3`の違いは何ですか?

  1. 正確には何ですか?

  2. Rubyでは何が起こっていますか?

私はルビー2.2.1p85(2015年2月26日リビジョン49769)を使用しています。 3Fixnumのインスタンスであるため3.methodsは、Fixnumインスタンスメソッドが返される一方

+7

'3 'は' Fixnum'のインスタンスであり、 'Fixnum'は' Class'のインスタンスです。 – Aetherus

+2

... 'Class'は' Class'のインスタンスで、 'Class'は' Class'のインスタンスです... –

答えて

1

@Aetherusが言ったように、Fixnumは、クラスのインスタンスであるため、そのクラスのメソッドの戻りFixnum.methods全。

たとえば、基本演算演算子は:+,:-などのインスタンスメソッドであるため、Fixnum.respond_to?(:+)falseを返します。 3.respond_to?(:class_variables)falseを返します。そのメソッドはクラスメソッドであるため、そのクラスのインスタンスはアクセスできません。

関連する問題