Ruby 为什么'Net::HTTPUnknownResponse.kind_?Net::HTTPResponse'返回'false'?
我正在使用library net/http,并试图检查响应类型是否为net::HTTPResponse。我试过: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类是类的实例
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