{'a' => 'b'}.grep /a/ => [] >> {'a' => 'b'}.grep /b/ => []
它似乎与键或值不匹配.它做了我不能辨别的事情吗?
解决方法
grep是在Enumerable上定义的,即它是一个对Hashes一无所知的通用方法.它可以运行Enumerable的任何元素. Ruby没有键值对的类型,它只是将哈希条目表示为双元素数组,其中第一个元素是键,第二个元素是值.
grep使用===方法过滤掉元素.既然都没有
/a/ === ['a','b']
也不
/b/ === ['a','b']
是的,你总是得到一个空数组作为响应.
试试这个:
def (t = Object.new).===(other) true end {'a' => 'b'}.grep t # => [['a','b']]
在这里,您可以看到grep如何与Hashes一起使用.