Сделать преобразование функтора к списку значений:
Теперь про списки:
LIST устроен примерно так:
A %ST // - возвращает непосредственный стереотип элемента A %P // - возвращает непосредственного родителя элемента
Теперь про списки:
A LIST %ST // - возвращает список стереотипов элемента A LIST %P // - возвращает родителей элемента
LIST устроен примерно так:
ARRAY operator LIST
OBJECT IN %S
// - элемент от которого получается список
^ IN aFunctor
// - функтор получения элемента списка
OBJECT VAR l_Element
// - элемент списка
l_Element := %S
Result :=
[ (
// - открываем массив
while true
begin
l_Element := ( l_Element aFunctor DO )
// - вычисляем следующий элемент списка
if ( l_Element pop:object:IsNil ) then
// - достигли вершины списка элементов
BREAK
// - выходим из цикла
l_Element
// - добавляем элемент в массив
end
) ]
// - закрываем массив
; // LIST
Сделано.
ОтветитьУдалить