parser

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

 

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

Ответ

G_Z 04.06.2016 19:40 / 04.06.2016 19:43

1) я правильно понимаю, что add (это прикручивание к уже сущ.методу сложения хешей? или это совпадение?)
Это доработка существующего метода.
Он уже умеет добавлять ключи в хеш, нужно только добавить позицию.

Вставляет он после указанной позиции.
^hash.add(index)[$.key[value] …]

только так и не решено "вслух", как будет отработано такое поведение:

0: KeyA:ValueA
1: KeyB:ValueB
2: KeyC:ValueC

^hash.add(0)[$.KeyC[valueC2]]

одноименный ключ 'KeyC' по индексу 2 - "утилизирутся"?
или метод вернет false? или вызовет исключение?
Получится
0: KeyC:ValueC2
1: KeyA:ValueA
2: KeyB:ValueB

Ключ получит новое значение в новой позиции.

a) в моем случае replace закрывает как ваш add - по ключу/индексу,
так и ваш rename ключа
+ дает возможность заменить только Value по индексу, не указывая имя нового ключа,
как это сделать с вашим add - не очевидно.
Куда уж очевиднее:
$hash.[^hash.at($index)[key]][new_value]
b) ну и самое главное,
кажется что ваш replace никак не может быть бескровно заменен на delete + add
при работе по индексу.

Потому, что после delete - порядок ключей перестроится, и индексы уползут,
надо будет еще и доставать актуальный индекс для последующего add
- все это не выглядит упрощением.
Add добавляет ключ после указанного индекса, не вместо.
В конце-концов, если вставка сложная — в виде хеша — можно добавить новый ключ, и после этого удалить старый, узнав его новый индекс.
Да и шаг назад как раз обсуждали, что
^hash.replace[key;$.key[value] …]

два ключа подряд в аргументе, хотя и key $.key - но тем не менее, путанно.
Не вижу никакой путаницы.
Зато при передаче в виде хеша можно заменить ключ на хеш, а не только значение на значение.
да и сам add с определением (вставка по индексу) как-то неоднозначен,
это в любом случае замена, зато замена не дает разночтения что это вставка "между" или вставка "поверх" - при этом сам add переводится как добавление.
Мы добавляем ключи в хеш в указанную позицию.
Метод уже так работает, появится только указатель позиции.

Существующие ключи перезаписываются.
$one[
	$.a[1]
	$.b[2]
]
$two[
	$.b[3]
	$.c[4]
]
^one.add(0)[$two]

->

$one[
	$.b[3]
	$.c[4]
	$.a[1]
]