Проверка типа экземпляра в ruby

#ruby

#ruby

Вопрос:

Я отлаживаю приложение, в котором мне нужно проверить, соответствует ли класс ресурсов DNS-запроса типу IN. Вот что я обнаружил:

 [6] pry(#<DNS::Server>)> resource_class
=> Resolv::DNS::Resource::IN::A
[7] pry(#<DNS::Server>)> resource_class.inspect
=> "Resolv::DNS::Resource::IN::A"
[8] pry(#<DNS::Server>)> resource_class.class.name
=> "Class"
[9] pry(#<DNS::Server>)> resource_class.kind_of? Class
=> true
[10] pry(#<DNS::Server>)> resource_class.kind_of? Resolv::DNS::Resource::IN::A
=> false
[11] pry(#<DNS::Server>)> resource_class.instance_of? Class
=> true
[12] pry(#<DNS::Server>)> resource_class.instance_of? Resolv::DNS::Resource::IN::A
=> false
[13] pry(#<DNS::Server>)> resource_class.is_a? Class
=> true
[14] pry(#<DNS::Server>)> resource_class.is_a? Resolv::DNS::Resource::IN::A
=> false
 

Я пытался проверить, использование resource_class.instance_of? Resolv::DNS::Resource::IN::A которого не работает. Как мне это проверить?

Ответ №1:

Ваш resource_class класс. Это не экземпляр Resolv::DNS::Resource::IN::A ; это Resolv::DNS::Resource::IN::A . Таким образом, простого сравнения будет достаточно:

 resource_class == Resolv::DNS::Resource::IN::A