有很多答案可以使我们做到这一点,就像这样:
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]
答案 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}]