Попытки 1 и 3 выше эквивалентны, передавая один одномерный массив конструктору, что не правильно.
Чтобы это работало так, как вы ожидаете, вам нужно передать параметры в виде отдельных аргументов или в виде двумерного массива пар>
# Split the array into args (equivalent to example #2 above)
# equivalent to Hash[key1, val1, key2, val2]
Hash[*ary]
# or wrap the array in another array (an array of nested pairs)
# equivalent to Hash[[[key1,val1],[key2,val2]]]
Hash[[ary]]
Неправильное поведениевидение предположительно потому, что конструктор ожидает массив массивов длины 2, в то время как вы передали массив строк.Он интерпретирует arg[0]
как ключ для каждой пары и arg[1]
как значение, в этом случае f
и o
, b
и a
.