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