Вы можете передать пары ключ-значение двумя способами:
- Непосредственно в качестве аргументов для
Hash::[]
, причем ключи и значения чередуются - В качестве массива пар каждаяпредставлен массивом, содержащим ключ и значение
Первая форма соответствует 1, вторая форма соответствует 1, четвертая форма соответствует 2, но третья форма также не подходит (она состоит изодин массив, но ни :a
, ни 1
не является парой ключ-значение).
Причина, по которой вторая форма полезна, заключается в том, что именно это вы и получаете от методов перечисления Hash - массивпары ключ-значение в массивах.Таким образом, вы можете написать Hash[some_hash.map {|k, v| [k, v+1]}]
, и вы получите хэш, преобразованный так, как вы хотите.