我想使用方法include?
来检查给定项是否存在。有人会告诉我使用Array和使用Hash有什么区别吗?
例如:
a=[];
h={}
a.include? "abc"
h.include? "abc"
使用Hash应该更快,更耗费内存吗?
答案 0 :(得分:0)
如果感到困惑,请阅读文档!
来自:http://www.ruby-doc.org/core-2.1.1/Hash.html#method-i-include-3F
哈希#包括?如果hsh中存在给定键,则返回true。
来自:http://www.ruby-doc.org/core-2.1.1/Array.html#method-i-include-3F
阵列#包括?如果给定对象存在于self中(即,如果任何元素== object),则返回true,否则返回false。
所以Hash#include?
寻找匹配的键,而不是值。 Array#include?
在列表中搜索匹配的对象。
通常,在拥有有序对象列表时使用数组。如果需要名为对象的集合,请使用哈希。
暂时不要担心这件事。真。在Ruby中使用Hash应该更快,内存消耗更多吗?
从技术上讲,由于散列键可以是大对象,因此散列可能会占用更多内存。但是这可以通过使用占地面积较小的键来驯服。如果这是一个主要问题,甚至根本不使用红宝石也是个好主意。在大多数情况下,首先使用具有逻辑意义的数据结构,然后再对其进行优化。