【问题标题】:Why does 'Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse' return 'false'?为什么'Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse' 返回'假'?
【发布时间】:2019-01-07 17:42:10
【问题描述】:

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

Net::HTTPUnknownResponse.kind_of? Net::HTTPResponse
# => false

怎么了?

【问题讨论】:

  • 我看不出有什么问题。怎么了?你告诉我们。

标签: ruby net-http


【解决方案1】:

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实例,而不是类本身。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2014-02-03
    • 2012-08-27
    • 2014-09-07
    • 2021-11-19
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多