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