如何在Ruby中定义哈希对象数组?

时间:2018-10-27 18:26:20

标签: arrays ruby hash hashmap

有很多答案可以使我们做到这一点,就像这样:

array = [a: 1, b: 2, c: 3]。但是我正在寻找的是更接近c ++或java实现的东西。

在C ++中,我们可以像这样定义对数组:

map <pair<int,int>,int> mp;

,也许用它来分配值,例如:

mp[{x1,y1}] = 1;

或者检查是否存在某些元素,如下所示:

while(range(x,y) && !mp[{x,y}]) {
    x += xx;
    y += yy;
    ans++;
 }

现在的问题是,我们如何定义类似于c ++的哈希数组,而我们却拥有类似的东西:

 array = [{1,1}: 1, {2,2}: 2, {3,3}: 3]

2 个答案:

答案 0 :(得分:2)

在Ruby中,映射称为Hashes。哈希是字典式的唯一键及其值的集合。哈希键可以是任何类型:数字,符号,字符串,数组,其他哈希等。

因此您可以将其写为散列,其中键是数组:

hash = {[1, 1] => 1, [2, 2] => 2, [3, 3] => 3}
# => {[1, 1]=>1, [2, 2]=>2, [3, 3]=>3} 

hash[[2, 2]]
# => 2

hash[[12, 34]] = 55
# => 55 

hash
# => {[1, 1]=>1, [2, 2]=>2, [3, 3]=>3, [12, 34]=>55} 

答案 1 :(得分:2)

a = [1, 2, 3]

a.map { |e| { [e,e] => e } }
  #=> [{[1, 1]=>1}, {[2, 2]=>2}, {[3, 3]=>3}]