4

それらは同等に見えますが、それらを比較すると、それは誤りです:

5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
4

3 に答える 3

3

Numeric == Fixnumfalseそれらは異なるクラスであるため、返されます。

is_a?オブジェクトが特定のクラスであることをチェックしませんinstance_of?。これは のドキュメントですis_a?:

class が obj のクラスである場合、または class が obj または obj に含まれるモジュールのスーパークラスの 1 つである場合、true を返します。

他の回答で述べたように、Fixnumは のサブクラスですNumeric。これが理由5.is_a? Fixnumであり、5.is_a? Numeric両方とも を返しtrueます。

于 2016-02-22T07:32:58.760 に答える