我正在使用库net/http
,并试图检查响应是否为Net::HTTPResponse
类型。我尝试过:
Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse
# => false
怎么了?
答案 0 :(得分:4)
kind_of?
用于检查对象是否为给定类的实例。
1.kind_of? Numeric
#=> true
您不能仅将实例替换为其类:
Integer.kind_of? Numeric
#=> false
因为Integer
(该类)是Class
的实例:
Integer.kind_of? Class
#=> true
相反,您可以使用<
来检查接收方是否是给定类(或模块,它不仅限于类)的子类:
Integer < Numeric
#=> true
Integer < Comparable
#=> true
在您的特定情况下:
require 'net/http'
Net::HTTPUnknownResponse < Net::HTTPResponse
#=> true
请注意,以上代码将总是返回true
(除非您更改类层次结构)。如果您使用的是net/http
库,则响应对象应该是Net::HTTPUnknownResponse
的 instance ,而不是类本身。