それらは同等に見えますが、それらを比較すると、それは誤りです:
5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
それらは同等に見えますが、それらを比較すると、それは誤りです:
5.is_a? Fixnum
# => true
5.is_a? Numeric
# => true
Numeric == Fixnum
# => false
Numeric == Fixnum
false
それらは異なるクラスであるため、返されます。
is_a?
オブジェクトが特定のクラスであることをチェックしませんinstance_of?
。これは のドキュメントですis_a?
:
class が obj のクラスである場合、または class が obj または obj に含まれるモジュールのスーパークラスの 1 つである場合、true を返します。
他の回答で述べたように、Fixnum
は のサブクラスですNumeric
。これが理由5.is_a? Fixnum
であり、5.is_a? Numeric
両方とも を返しtrue
ます。