ruby - 为什么 'Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse' 返回 'false' ?

标签 ruby net-http

我正在使用库 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/

相关文章:

Ruby - 将字符映射到二维数组中的整数

ruby - 将用户输入转换为整数时,为什么在 Crystal 中需要 .to_s 方法?

ruby-on-rails - 根据父属性验证子项

javascript - 当我用 "text_field_tag"(ruby on rails) 写入输入时如何使用 onkeyup() 方法

ruby-on-rails - 以法拉第为参数发布图像

go - 登录请求后的 POST 请求,仍然请求权限

ruby-on-rails - ruby on rails 中的文件存储库

ruby - 净 :HTTP SSL negotiation timeout on Ubuntu 14. 04

ruby - 从 Ruby 脚本创建 Gist

ruby-on-rails - 为什么我在 Rails 中得到 "Errno::ECONNREFUSED"和 'net/http'?