Ruby 为什么'Net::HTTPUnknownResponse.kind_?Net::HTTPResponse'返回'false'?

Ruby 为什么'Net::HTTPUnknownResponse.kind_?Net::HTTPResponse'返回'false'?,ruby,net-http,Ruby,Net Http,我正在使用library net/http,并试图检查响应类型是否为net::HTTPResponse。我试过: Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse # => false 怎么了?有点?用于检查对象是否是给定类的实例,例如 1.kind_of? Numeric #=> true 不能仅用实例的类替换实例: Integer.kind_of? Numeric #=> false 因为Integer类是类的实例

我正在使用library net/http,并试图检查响应类型是否为net::HTTPResponse。我试过:

Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse
# => false
怎么了?

有点?用于检查对象是否是给定类的实例,例如

1.kind_of? Numeric
#=> true
不能仅用实例的类替换实例:

Integer.kind_of? Numeric
#=> false
因为Integer类是类的实例:

相反,您可以使用来检查接收器是否是给定类或模块的子类,它不限于类:

Integer < Numeric
#=> true

Integer < Comparable
#=> true
在您的具体情况下:

require 'net/http'

Net::HTTPUnknownResponse < Net::HTTPResponse
#=> true

请注意,除非更改类层次结构,否则上述代码将始终返回true。如果您使用的是net/http库,那么响应对象应该是net::HTTPUnknownResponse的实例,而不是类本身。

我看不出有什么问题。发生了什么?你告诉我们。
require 'net/http'

Net::HTTPUnknownResponse < Net::HTTPResponse
#=> true