четверг, 11 февраля 2021 г.

Синтаксис снова погрузил меня в раздумья

 Продолжил работу на массивами. Добавил указатели, чтобы не копировать содержимое массива при операциях с ним. Это потребовало создать таблицу со счётчиками ссылок (как-то раньше мне не приходило такое решение - хранить их именно в таблице). Добавил команду ".r", чтобы делать листинг этой таблицы.

Добавил команду append в класс Vector и задумался вот над каким вопросом: в каких случаях объект, используемый в качестве объекта команды, должен помещаться на стек.

Создание массива типа [Boolean] и добавление значения в него

Ведь команда

Boolean [] append true

создаёт массив типа [Boolean], для которого вызывается метод append true, но сам этот массив на стеке не сохраняется. А по идее должен бы. Но в каком месте это нужно делать - вот вопрос, на который мне предстоит себе ответить.

С командами

Boolean []
$* 1

всё просто. Первая создаёт массив типа [Boolean] и помещает указатель на него на стек.

Вторая берёт элементы со стека, создаёт массив и помещает элемент с индексом 1 на стек. По сути она делает то же самое, что и команда

$1

Затем мы можем для этого массива типа [Boolean] выполнить команду

$0 append true

И поскольку это указатель, то значение будет добавлено в массив на стеке.

Добавление значений в массив типа [Boolean]

Но если массив будет инициализироваться например командой

Boolean [] = $0

то мы ведь как бы ожидаем, что результат будет размещён на стеке. Вот, это мне и предстоит придумать, как это должно быть реализовано.

Комментариев нет: