parser

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

 

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

Ответ

moko 01.06.2016 18:51

# в выражениях метод возвращает true/false - результата выполнения
Только в выражениях, к сожалению, нельзя. Результат будет всегда.

^hash.add - вероятно лучше ^hash.put[key;value;options]

$.preserve_inpos[ none | key | value ] - лучше $.keep[ none (default) | key | value ]

$.strict_mode(true/false(default)) - возможно лучше $.overwrite(true(default)/false).

$.place[ before | inpos(default) | after ] - самое мутное. Поведение зависит от наличия $.at, от значения зависит будет ли вставка или замена, превращение before в по сути first тоже вызывает сомнение.

Итого мне кажется для опций слишком большая вариативность поведения. Можно попробовать разделять на методы, чтобы упростить поведение параметров. Например разделить запись в хеш от замены.


1. ^hash.put[key][value;options]

$.at[ first | last (default) ] или $.at(index) или $.before[key] или $.after[key]

$.overwrite(true(default)/false)

Тут непонятность, должен ли учитываться $.at, если ключ уже есть в хеше. Сейчас просто перезаписывается значение,
порядок в хеше не меняется.


2. ^hash.replace[what][key;value;options] ^hash.replace(what)[key;value;options]

$.keep[ none (default) | key | value ]

Ну и true при успешности замены, false в противном случае.
Вроде как функционал похож, но поведение более прозрачно.
^hash.delete [key|index) # удалить по индексу или названию ключа
По ключу всегда было, по индексу сделаем...