Перемыл тут "шаблоны кодогенерации".
Из:
Получил:
Многословно..
Но!
"Это ещё не вечер"...
Update:
А в итоге получилось вот что:
или
Ну и в итоге рекурсивно:
-- .Children - оно "контекстно зависимое", от "первого параметра вызывающего слова", ну как от Self или this.
!!! Я бы конечно не стал бы морочиться с подобной "контекстной зависимостью", тем более, что "дураку" она понимания не добавляет.
Но к сожалению её "пронизан" ИСХОДНЫЙ "криптованный язык".
И АВТОМАТОМ перемыть шаблоны БЕЗ ЕЁ выкидывания - не получилось.
Но "руками" код УЖЕ можно писать и БЕЗ "контекстной зависимости".
Вот так:
-- И БУДУ к этому стремится.
Но ПОКА - не получается.
Что такое "auto" людям знакомым с C++11 - Должно быть известно :-)
Хотя "для скриптов" можно наверное и БЕЗ auto.
Вот так:
Из:
<%CX>
Получил:
for 'C' |==> begin OBJECT IN %C %C ExecuteGenerator end; // for
Многословно..
Но!
"Это ещё не вечер"...
Update:
А в итоге получилось вот что:
for Self.Children begin OBJECT IN aChild aChild .ExecuteGenerator end; // for
или
for .Children begin OBJECT IN aChild aChild .ExecuteGenerator end; // for
Ну и в итоге рекурсивно:
for .Children begin OBJECT IN aChild for .Children begin OBJECT IN aChild aChild .ExecuteGenerator end; // for aChild .ExecuteGenerator end; // for
-- .Children - оно "контекстно зависимое", от "первого параметра вызывающего слова", ну как от Self или this.
!!! Я бы конечно не стал бы морочиться с подобной "контекстной зависимостью", тем более, что "дураку" она понимания не добавляет.
Но к сожалению её "пронизан" ИСХОДНЫЙ "криптованный язык".
И АВТОМАТОМ перемыть шаблоны БЕЗ ЕЁ выкидывания - не получилось.
Но "руками" код УЖЕ можно писать и БЕЗ "контекстной зависимости".
Вот так:
for Self.Children begin OBJECT IN aChild for aChild.Children begin OBJECT IN aChild aChild .ExecuteGenerator end; // for aChild .ExecuteGenerator end; // forВ идеале конечно хотелось бы так:
for auto aChild in Self.Children begin for auto aChild in aChild.Children begin aChild .ExecuteGenerator end; // for aChild .ExecuteGenerator end; // for
-- И БУДУ к этому стремится.
Но ПОКА - не получается.
Что такое "auto" людям знакомым с C++11 - Должно быть известно :-)
Хотя "для скриптов" можно наверное и БЕЗ auto.
Вот так:
for aChild in Self.Children begin for aChild in aChild.Children begin aChild .ExecuteGenerator end; // for aChild .ExecuteGenerator end; // for
Зато "каждый дурак" поймет - а это гигантский плюс.
ОтветитьУдалить"Зато "каждый дурак" поймет - а это гигантский плюс."
УдалитьВот мне тоже так кажется :-)
А в итоге получилось вот что:
for Self.Children
begin
OBJECT IN aChild
aChild .ExecuteGenerator
end; // for
или
for .Children
begin
OBJECT IN aChild
aChild .ExecuteGenerator
end; // for