在Ruby中是否可以创建允许重复键的哈希表?
我正在使用Ruby 1.9.2。
在哈希表中实现重复键的两种方法:
h1 = {}
h1.compare_by_identity
h1["a"] = 1
h1["a"] = 2
p h1 # => {"a"=>1, "a"=>2}
h2 = {}
a1 = [1,2,3]
a2 = [1,2]
h2[a1] = 1
h2[a2] = 2
a2 << 3
p h2 # => {[1, 2, 3]=>1, [1, 2, 3]=>2}
compare_by_identity
通过比较object_id来工作,普通哈希通过比较eql?
方法的结果来比较。 - steenslagh1['a']
时,a
字符串对象会以不同的 ID 创建。但在其他版本中,每次写 h1['a']
时,'a' 的 ID 都是相同的。解决方法是使用 h1['a'.clone]
来创建一个新的字符串对象。 - ivanibashh = Hash.new { |h,k| h[k] = [] }
h[:foo] << :bar
h #=> {:foo=>[:bar]}
h[:foo] << :baz
h #=> {:foo=>[:bar, :baz]}
attrs = { ..., displayName: user.short_name, objectClass: "organizationPerson", objectClass: "person", objectClass: "top", objectClass: "user", i }
- Cyril Duchon-Doris
Hash
类的实例,其中包含两个条目,每个条目都具有完全相同的键吗? - Ray Toal