Създаване на хеш чрез map

Ако искате от списък да създадете хеш, например по този начин:

from = [1, 2, 3, 4]

Какво да има тук? #=> {1 => 1, 2 => 4, 3 => 9, 4 => 16}

Можете да използвате map, в комбинация с метода to_h така:

[1, 2, 3, 4].map do |number|
  [number, number**2]
end.to_h

Чрез map преобразуваме всеки елемент на списъка в двойка - ключ и стойност. След това, чрез to_h превръщаме този списък от двойки в хеш.

Горното е абсолютно еквивалентно на:

squares = {}

[1, 2, 3, 4].each do |number|
  squares[number] = number**2
end

squares #=> {1 => 1, 2 => 4, 3 => 9, 4 => 16}

Предпочитаме map и to_h :)