Ответ
andylars 01.06.2016 09:45
/ 01.06.2016 09:47
Мудрёно
Add и куча опций к нему по-моему не сильно «в духе Парсера».
Я, кстати, принудительно старался именно в "духе Парсера" :), заметив, что он скуп на методы, но щедр на опции. Сначала я хотел все привести к методам. Казалось бы, что при одинаковом внутреннем исполнении, сухие методы намного читабельнее по коду.
Предварительно посмотрел на класс List в Golang, и увидел что тот минимум к которому они пришли, это нормальная себе такая пачка методов.
И в то же время, если опции нацелены на более редкое (но нужное порой) - поведение, то аутентичный метод с минимум заданных опций на практике - будет служить свою службу и методов не наплодится. В общем, это вопрос компромисса и семантики.
В любом случае, это предложение - "болванка" для дальнейшей дискуссии по оптимизации и утряске. Зато я убежден, что эта болванка вроде как очерчивает ~100% области решений и всего зоопарка логической модели, что крутится вокруг всех этих rename, upsert, и прочего зоопарка, который не без оснований нужен и полезен.
Утрясать и отсекать от этой болванки - только "за"!
По крайней мере, этот набор не просто из головы, а из практики.
------------------------------------------
^hash.move[key|index)[options] # переместить ключ
Move — это же delete + insert.
Да, возможно, но для перемещения тогда между delete и insert - в цикле на кажду итерацию, будут нырки из под капота парсера - наверх: присваивание, резолвинг имени хеша (особенно если он длинный), ну или что-то в таком духе...
Я не знаю подкапотного устройства Парсера, поэтому, по-наитию, решил, что выныривание при такой операции поделит производительность ровно на 2. Это как в аналогии с БД: можно вытянуть данные, произвести арифм.операции, а потом вставить их. Но лучше (если есть возможность) отдать арифметику сразу в запросе, не выниривая из БД.
------------------------------
^hash.delete [key|index) # удалить по индексу или названию ключа
Удаление по index — хорошо.
Я предлагал ещё удаление списком.
Мысль о "пачках" была, но не стал ее развивать, а так - да.
-----------------------
^hash.order[order] - изменить порядок следования ключей, тут не знаю, index_asc/desc, key_asc/desc
Есть sort.
Да, проглядел, это лишнее.
- Есть ли какой-то ловкий способ изменить имя ключа в hash, с сохранием его места (по индексу)., andylars 28.05.2016 12:28
- и всё, что-ли? даже в top3 самых больших тредов не добрались! %-) (-), Misha v.3 [M] 16.06.2016 10:15
- Ответ, moko [M] 16.06.2016 14:28
- Огласите top :) (-), andylars 16.06.2016 11:24
- Ответ, Misha v.3 [M] 16.06.2016 14:29 / 16.06.2016 14:30
- Ответ, moko [M] 30.05.2016 00:59
- Всмысле это предложение или уже недокументированная возможность в ночных сборках?, andylars 30.05.2016 11:04 / 30.05.2016 11:05
- Ответ, moko [M] 30.05.2016 12:38
- Методы для работы с порядком элементов в хеше..., Sumo [M] 06.06.2016 11:05 / 06.06.2016 11:06
- Ответ, G_Z [M] 06.06.2016 15:13
- Ответ, moko [M] 06.06.2016 13:48
- Можно вообще не делать новый метод вставки. а расширить add..., Sumo [M] 06.06.2016 14:03
- Ответ, Sumo [M] 06.06.2016 14:00
- Ответ, moko [M] 06.06.2016 14:29
- Ответ, moko [M] 06.06.2016 14:23
- Если «нестандартный вариант» кажется проблемой, то можно и иначе..., Sumo [M] 06.06.2016 15:09
- Ответ, moko [M] 06.06.2016 22:10
- От add - ожидаешь, что он сохранит физ.смысл = сложение/слияние ключей. Картинки прилагаются., andylars 07.06.2016 00:28 / 07.06.2016 00:50
- put это эффективный add одного элемента, moko [M] 07.06.2016 00:43
- Я однозначно не понимаю, как вы сочетаете add и before/after, andylars 07.06.2016 01:00
- Если перестать думать про ключи и значения, то все встает на вои места..., Sumo [M] 07.06.2016 06:29
- Я таки осознал, что надо наоборот - перестать думать об add, как overlapping-методе для множества, тем более, что он выбивается из стройного ряда. (-), andylars 08.06.2016 09:50
- Поэтому, дополнить операции со множествами - операциями с рядами, можно только органически подобными по механике, иначе imho каша., andylars 07.06.2016 10:33 / 07.06.2016 10:51
- Именно так я и воспринимал. Словарь - это множество. А массив - это ряд. И операции для них работают по-разному., andylars 07.06.2016 10:03
- Ответ, G_Z [M] 07.06.2016 02:01
- Ответ, G_Z [M] 06.06.2016 23:14
- Страшновато глазами пользователя... http://www.parser.ru/forum/?id=83206, andylars 06.06.2016 16:18 / 07.06.2016 00:37
- Мне так OK, moko [M] 06.06.2016 15:21
- Вопрос семантики: begin/end будут точнее first/last, но само поведение какое-то нелинейное получается. (-), andylars 06.06.2016 14:27
- Re: Ответ (updated), andylars 06.06.2016 12:08 / 06.06.2016 13:07
- Ответ, Sumo [M] 06.06.2016 13:14
- Как черновой вариант формализации..., andylars 31.05.2016 15:44 / 31.05.2016 23:22
- Ответ, moko [M] 01.06.2016 18:51
- Мудрёно, G_Z [M] 01.06.2016 00:16
- Ответ, andylars 01.06.2016 09:45 / 01.06.2016 09:47
- А еще получить индекс ключа, зная название ключа, как-то реально без перебора всех записей? (-), 28.05.2016 17:16