为什么instance_of?(Hash)返回错误的结果

时间:2011-04-23 17:28:02

标签: ruby-on-rails ruby

我的哈希是h = {"1"=>"0-20%"}

我检查h.instance_of?(Hash)应返回false,但会返回true

为什么?

3 个答案:

答案 0 :(得分:4)

h是哈希类和

的一个实例

根据here

  

如果obj是其实例,则返回true   给定的类。也可以看看   对象#kind_of?

因此,根据定义,h.instance_of?(Hash)将返回true。

答案 1 :(得分:1)

没有instance_of。可能你想做instance_of?。它应该返回true,因为它是一个哈希值。

答案 2 :(得分:0)

这是一个很好的问题。但是错过了代码的执行上下文。应该提一下,问题有ruby-on-rails标签。

我不知道具体但在某些情况下您的Hash可以提升为ActiveSupport::HashWithIndifferentAccess。这会导致instance_of?返回false

在这种情况下使用kind_of?