Добавил массив значений типа Value (то есть любого типа), а также особый случай адресации стека $* (все значения данного фрейма) и $$* (все значения предыдущего фрейма).
Дело в том, что оператор $* предполагает два варианта использования: либо все значения на стеке нужно скопировать, либо поместить их в массив.
Например, если написать команду
$*
то это будет означать, что мы хотим продублировать все значения на стеке.
А например команда
$* xxxx
будет означать, что мы хотим взять все значения на стеке как массив значений [], и для этого массива нужно выполнить команду xxxx.
Это позволит написать что-нибудь вроде:
zzz set_data [
$$*
]
То есть скопировать все значения из предыдущего фрейма стека, поместить их в массив и передать в качестве параметра методу set_data объекта с именем zzz.
Но ведь писать такое каждый раз совершенно не хочется. Поэтому я предусмотрел особый случай использования $*, так что можно будет просто написать:
zzz set_data $*
Вы, возможно, спросите: а как работать с массивом, если синтаксис допускает только один параметр у функции?
На этот случай я придумал интересный трюк. Индекс массива я хочу сделать именем свойства, значением которого выступает элемент массива. То есть:
my_array 2 set "xxxx"
Для элемента массива my_array с индексом 2 вызывается метод set с параметром "xxxx".
Круто, но я пока за это не брался. Там нужно придумать, как это реализовать.
Комментариев нет:
Отправить комментарий