parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

хеш c числовыми индексами не совсем обычный хеш

moko 26.05 04:21

Такие хеши использовались ранее для имитации массивов. Не только разработчиками, но и в самом парсере (в json:parse например). И реализованные разряженные массивы максимально совместимы с такими хешами. Ваш же пример:
$h[
	$.100[qqq]
	$.10[www]
	$.50[eee]
]
$a[^array::copy[$h]]
$h.10
$a.10
В обоих случаях будет www. И чтобы в коде можно было прозрачно заменить использование хешей с числовыми индексами на array (как мы сделали в json:parse) -сохранение ключей куда важнее (порядок конкретно в таких хешах обычно и так по возрастанию индексов).

Если важны только значения, причем в порядке исходного хеша - без проблем, такая возможность тоже есть - это и обсуждаемый в топике ^array::join[$h], а теперь еще и ^h.array[values]. Но по умолчанию поведение рассчитано на максимальную совместимость с хешом. И это работает, почти единственной проблемой при обновлении в нашем коде оказались случаи явной проверки типа (например $push.commits is hash пришлось заменить на $push.commits is array).