Почему instance_of? (Hash) возвращает неправильный результат - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть хэш h = {"1"=>"0-20%"}

Я проверяю h.instance_of?(Hash), который должен вернуть false, но возвращает true.

Почему?

Ответы [ 3 ]

4 голосов
/ 23 апреля 2011

h является экземпляром класса Hash, а

согласно здесь :

Возвращает true, если obj является экземпляром данный класс. Смотрите также Объект # kind_of?.

Таким образом, по определению h.instance_of?(Hash) вернет истину.

1 голос
/ 23 апреля 2011

Нет instance_of.Вероятно, вы хотите сделать instance_of?.Он должен вернуть true, потому что это хеш.

0 голосов
/ 22 марта 2013

Это хороший вопрос.Но пропустил контекст выполнения кода.Следует отметить, что в вопросе есть тег ruby-on-rails.

Я не знаю конкретного, но в некоторых случаях ваш Hash может быть повышен до ActiveSupport::HashWithIndifferentAccess.И это заставляет instance_of? возвращать false.

. В этом случае используйте kind_of?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...