Как добавить любой хэш в пустой массив хэшей? - PullRequest
0 голосов
/ 18 января 2019

Я только изучаю Crystal, но застрял в массиве хэшей смешанного типа.

Предположим, существует массив хэшей:

array = [{"a" => "Aa", "b" => 66, "c" => Time.now}]

Я могу легко добавить еще один элемент:

array << {"c" => "Bb", "d" => 2, "f" => 1.year.from_now}

Но когда я начинаю с пустого массива:

empty = [] of Hash(String, String | Time | Int64)

и попробуйте добавить новый элемент, появляется ошибка:

empty << {"a" => "Aa", "b" => 66, "c" => Time.now}
# no overload matches 'Array(Hash(String, Int64 | String | Time))#<<' 
# with type Hash(String, Int32 | String | Time)

Не могли бы вы объяснить, что я делаю не так?

Ссылка на пример кода

1 Ответ

0 голосов
/ 18 января 2019

У вас есть маленькая ошибка. Вы определили хэш с String, Int64 | String | Time, но пытаетесь добавить хеш с String, Int32 | String | Time.

Просто измените Int64 на Int32, и это будет работать, см. Фиксированный пример - https://play.crystal -lang.org / # / r / 6185

...