7
A
回答
11
grep
定义在Enumerable
上,即它是一种对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。
相关问题
- 1. “T:new()”对泛型有什么意义?
- 2. 使用.class对象有什么意义?
- 3. MarshalByValue对象有什么意义?
- 4. AdCreative对象的image_url有什么意义?
- 5. 这对Coffeescript有什么意义?
- 6. Redis HMSET文档:'hash'是什么意思?
- 7. Draggable div - 有什么意义?
- 8. HTML DTD - 有什么意义?
- 9. 为什么const有意义?
- 10. ASyncToken有什么意义?
- 11. XNA:Unload()有什么意义?
- 12. DocumentDB:“Upsert”有什么意义?
- 13. 接口有什么意义?
- 14. XPS有什么意义?
- 15. FILL_AND_STROKE有什么意义?
- 16. Html.DisplayTextFor()有什么意义?
- 17. setArguments有什么意义?
- 18. DOCTYPE有什么意义?
- 19. OpenClipboard API有什么意义?
- 20. document.defaultView有什么意义?
- 21. tornado.locale.Locale.translate有什么意义?
- 22. NSRange.toRange()有什么意义?
- 23. aclocal有什么意义?
- 24. Convert.ToDateTime(bool)有什么意义?
- 25. setRetainsRegisteredObjects有什么意义?
- 26. 或门有什么意义?
- 27. 豆有什么意义?
- 28. 有什么意义 “[=]” 以CPP
- 29. 什么@ {hash {$ key}}在Perl中的含义?
- 30. 在Perl中,if(%hash)和if(定义的%hash)之间有什么区别?
谢谢,我看到===是为Object定义的,但没有为Hash重写,所以它没有意义。但至少我现在看到:{'a'=>'b'}。grep Array ... => [[“a”,“b”]] – user258980 2010-09-16 05:33:35
@ user258980:事实上,'Hash#=== '没有被定义是完全不相关的,因为你没有调用'Hash#===',你正在调用'Hash#grep'。然后'Hash#grep'调用传递给它的任何对象的'==='方法。在你的例子中,该对象是'/ a /',所以'Hash#grep'最终调用'Regexp#==='依次传递每个元素。由于这些元素是两元素数组,并且'Regexp'显然永远不能匹配数组,只有字符串,结果将始终为空。 – 2010-09-16 11:39:40
谢谢澄清。 – user258980 2010-09-16 18:37:16