Javaでは、instanceof
を実行できます。 Ruby同等のものはありますか?
それはほとんどまったく同じです。 Object
のinstance_of?
メソッドを使用できます。
"a".instance_of? String # => true
"a".instance_of? Object # => false
Rubyにはis_a?
メソッドとkind_of?
メソッドもあり(これら2つはエイリアスであり、まったく同じように機能します)、true
はスーパークラスの一致の1つを返します。
"a".is_a? String # => true
"a".is_a? Object # => true
kind_of?
およびis_a?
は同義語です。これらは、Javaのinstanceof
と同等のRubyです。
instance_of?
は、オブジェクトがサブクラスではなく、その正確なクラスのインスタンスである場合にのみtrue
を返すという点で異なります。
instance_of?
およびkind_of?
メソッド。こちらがドキュメントリンクです http://Ruby-doc.org/core/classes/Object.html#M000372
クラスオブジェクトを返すklass
で成功しました。これはRails固有のようです。
サンプル使用法:
class Foo
end
Foo.new.klass
# => Foo
Foo.new.klass == Foo
# => true
Foo.new.klass == "Foo"
# => false
これを実現するメソッドもあります: Object.is_a?
。クラスオブジェクトを引数として受け取り、self
がクラスのインスタンスまたはサブクラスのインスタンスである場合にtrueを返します。