Създаване на хеш чрез 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
:)