- Использование метода
dup
:
Методdup
создает неполную копию существующего хеша. Это позволяет вам изменять дубликат, не затрагивая исходный хеш.
original_hash = { name: "John", age: 30 }
new_hash = original_hash.dup
new_hash[:name] = "Jane"
puts original_hash # Output: { name: "John", age: 30 }
puts new_hash # Output: { name: "Jane", age: 30 }
- Использование метода
merge
.
Методmerge
объединяет два хеша, создавая новый хеш, содержащий пары ключ-значение из обоих хешей. Если есть повторяющиеся ключи, значения объединяемого хеша перезапишут значения исходного хеша.
hash1 = { name: "John", age: 30 }
hash2 = { occupation: "Developer", age: 25 }
new_hash = hash1.merge(hash2)
puts new_hash # Output: { name: "John", age: 25, occupation: "Developer" }
- Использование метода
select
.
Методselect
позволяет создать новый хеш, содержащий пары ключ-значение, из существующего хеша, который соответствует определенным критерии. Вы передаете блок методуselect
, и он возвращает новый хеш только с теми парами ключ-значение, которые удовлетворяют условию.
original_hash = { name: "John", age: 30, occupation: "Developer" }
new_hash = original_hash.select { |_key, value| value.is_a?(String) }
puts new_hash # Output: { name: "John", occupation: "Developer" }
- Изучение метода
transform_keys
.
Методtransform_keys
создает новый хэш, применяя преобразование к ключам существующего хеша. Вы передаете блок методуtransform_keys
, и он возвращает новый хеш с преобразованными ключами.
original_hash = { name: "John", age: 30 }
new_hash = original_hash.transform_keys(&:to_s)
puts new_hash # Output: { "name" => "John", "age" => 30 }
- Использование метода
map
.
Методmap
позволяет создать новый хеш путем преобразования пар ключ-значение существующего хеша. Вы передаете блок методуmap
, и он возвращает новый хэш с преобразованными парами.
original_hash = { name: "John", age: 30 }
new_hash = original_hash.map { |key, value| [key.to_s, value.to_s.upcase] }.to_h
puts new_hash # Output: { "name" => "JOHN", "age" => "30" }
- Использование метода
compact
.
Методcompact
создает новый хэш, удаляя все пары ключ-значение с помощьюnil
значения из существующего хеша.
original_hash = { name: "John", age: nil, occupation: "Developer" }
new_hash = original_hash.compact
puts new_hash # Output: { name: "John", occupation: "Developer" }
Это лишь некоторые из фантастических методов, которые Ruby предлагает для создания новых хэшей из существующих. Творчески комбинируя и используя эти методы, вы можете легко добиться мощных преобразований и манипуляций.
Так что вперед, экспериментируйте с этими методами и повышайте свои навыки хеширования Ruby!