Следующий код демонстрирует, как получить информацию о типах открытых аргументов рутинного объекта:
p: ROUTINE -- Routine object.
t: TYPE [detachable ANY] -- Current open argument type.
do
p := agent (i: INTEGER; s: STRING)
do
end
across
1 |..| p.open_count as i
loop
t := p.generating_type.generic_parameter_type (1).generic_parameter_type (i.item)
io.put_string (t.name)
io.put_new_line
end
Для меня приведенный выше код выводит
INTEGER_32
!STRING_8
Комментарии:
p.open_count
дает общее количество открытых аргументов. p.generating_type
возвращает тип объекта-подпрограммы. p.generating_type.generic_parameter_type (1)
возвращает тип открытых аргументовобъект кортежа. - Последний вызов
generating_type
возвращает тип открытого аргумента с индексом i.item
.