我正在使用库 net/http
,并尝试检查响应类型是否为 Net::HTTPResponse
。我尝试过:
Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse
# => false
出了什么问题?
最佳答案
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
的实例 ,而不是类本身。
关于ruby - 为什么 'Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse' 返回 'false' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51611475/