Продолжил работу на массивами. Добавил указатели, чтобы не копировать содержимое массива при операциях с ним. Это потребовало создать таблицу со счётчиками ссылок (как-то раньше мне не приходило такое решение - хранить их именно в таблице). Добавил команду ".r", чтобы делать листинг этой таблицы.
Добавил команду append в класс Vector и задумался вот над каким вопросом: в каких случаях объект, используемый в качестве объекта команды, должен помещаться на стек.
Ведь команда
Boolean [] append true
создаёт массив типа [Boolean], для которого вызывается метод append true, но сам этот массив на стеке не сохраняется. А по идее должен бы. Но в каком месте это нужно делать - вот вопрос, на который мне предстоит себе ответить.
С командами
Boolean []
$* 1
всё просто. Первая создаёт массив типа [Boolean] и помещает указатель на него на стек.
Вторая берёт элементы со стека, создаёт массив и помещает элемент с индексом 1 на стек. По сути она делает то же самое, что и команда
$1
Затем мы можем для этого массива типа [Boolean] выполнить команду
$0 append true
И поскольку это указатель, то значение будет добавлено в массив на стеке.
Но если массив будет инициализироваться например командой
Boolean [] = $0
то мы ведь как бы ожидаем, что результат будет размещён на стеке. Вот, это мне и предстоит придумать, как это должно быть реализовано.
Комментариев нет:
Отправить комментарий