В Java вы можете сделать instanceof
. Есть ли эквивалент Ruby?
Как проверить, является ли переменная экземпляром класса?
Ответ 1
Это почти то же самое. Вы можете использовать метод Object
instance_of?
:
"a".instance_of? String # => true
"a".instance_of? Object # => false
Ruby также имеет методы is_a?
и kind_of?
(эти 2 являются псевдонимами и работают точно так же), который возвращает true
, является одним из суперклассов:
"a".is_a? String # => true
"a".is_a? Object # => true
Ответ 2
kind_of?
и is_a?
являются синонимами. Они эквивалентны Ruby для Java instanceof
.
instance_of?
отличается тем, что возвращает только true
, если объект является экземпляром этого точного класса, а не подкласса.
Ответ 3
Посмотрите на методы instance_of?
и kind_of?
. Здесь ссылка doc http://ruby-doc.org/core/classes/Object.html#M000372
Ответ 4
У меня был успех с klass
, который возвращает объект класса. Это похоже на Rails-specific.
Использование образца:
class Foo
end
Foo.new.klass
# => Foo
Foo.new.klass == Foo
# => true
Foo.new.klass == "Foo"
# => false
Существует также метод, который выполняет это: Object.is_a?
, который принимает объект класса в качестве аргумента и возвращает true, если self
является экземпляром класса или экземпляра подкласса.