grep在Hash上是什么意思?

时间:2010-09-16 03:01:42

标签: ruby

{'a' => 'b'}.grep /a/
=> []
>> {'a' => 'b'}.grep /b/
=> []

它似乎与键或值不匹配。它做了我不能辨别的事情吗?

1 个答案:

答案 0 :(得分:12)

grepEnumerable上定义,即它是一种通用方法,对Hash es一无所知。它适用于Enumerable的任何元素。 Ruby没有键值对的类型,它只是将Hash条目表示为双元素数组,其中第一个元素是键,第二个元素是值。

grep使用===方法过滤掉元素。

/a/ === ['a', 'b']

,也不

/b/ === ['a', 'b']

是真的,你总是得到一个空数组作为响应。

试试这个:

def (t = Object.new).===(other)
  true
end

{'a' => 'b'}.grep t
# => [['a', 'b']]

在这里,您可以看到grep如何与Hash es。

一起使用