Как определить массив хеш-объектов в ruby? - PullRequest
0 голосов
/ 27 октября 2018

Существует множество ответов, которые позволяют нам достичь этого, например:

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 голосов
/ 27 октября 2018
a = [1, 2, 3]

a.map { |e| { [e,e] => e } }
  #=> [{[1, 1]=>1}, {[2, 2]=>2}, {[3, 3]=>3}]
0 голосов
/ 27 октября 2018

В Ruby карты называются Хешами .Хэш - это словарь-коллекция уникальных ключей и их значений.Ключ хэша может быть любого типа: число, символ, строка, массив, другой хэш и т. Д.

Таким образом, вы можете записать его в виде хэша, где ключи являются массивами:

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} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...