Lowering для foreach: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
(Новая страница: «Такой код <source lang="Delphi"> foreach var x in l do Print(x); </source> заменяется на <source lang="Delphi"> var a: IEnumerable<auto_…»)
(нет различий)

Версия от 10:53, 3 июля 2016

Такой код

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;

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