parser

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

 

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

Методы для работы с порядком элементов в хеше...

Sumo 06.06.2016 11:05 / 06.06.2016 11:06

Два обязательных метода:

^h.index_of[key] -> int
Возвращает порядковый номер ключа в хеше. Выбрасывает исключение, если ключа нет.

^h.insert[index;hash;options] -> []
Вставляет другой хеш перед index.
index — (int)|[first|last]. Отрицательный индекс как в ^hash.at.
Если в хеше есть одноименные ключи - выбрасываем исключение.
Если в опциях $.force(true), то удаляем одноименные ключи, вставляем новый хеш и не выбрасываем исключение.

И еще один для выкусывания куска хеша с индексами от from до to, чтобы не делать for+at:
^h.slice[from;to] -> [hash]
From - (int)|[first]
To - (int)|[last]

Вместе со штатным набором эти методы покрывают все возможные сценарии работы с хешем как со структурой данных. Что не покрывают, то не надо делать на хешах. :)

Риплейс:
^h.insert(^h.index_of[key])[$.key[$h.key];$.force(true)]

Реверс:
^h.sort[k;_](^h.index_of[$k])[desc]