Lowering для foreach

Материал из Вики проекта PascalABC.NET
Версия от 10:53, 3 июля 2016; Mikst (обсуждение | вклад) (Новая страница: «Такой код <source lang="Delphi"> foreach var x in l do Print(x); </source> заменяется на <source lang="Delphi"> var a: IEnumerable<auto_…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Такой код

foreach var x in l do
  Print(x);

заменяется на

var a: IEnumerable<auto_foreach> := l;
  
var en := a.GetEnumerator();
var curr: auto_foreach; // или эта переменная была описана ранее если foreach x
while en.MoveNext do
begin
  curr := en.Current;
  Print(curr);
end;

на синтаксическом уровне.