Nun ja, mit ein bisschen Generics und Closures bekommt man so etwas hin
Delphi-Quellcode:
&With.Block<string, Integer>(
'foo',
10,
procedure( const s: string; const n: Integer )
var
i: Integer;
sum: Integer;
begin
for i := 0 to 9 do
begin
sum := n + i;
WriteLn( s + IntToStr( sum ) );
end;
end );
oder
Delphi-Quellcode:
TArray.ForEach<TCar>(
pool,
procedure ( const car: TCar )
begin
&With.Block<TEngine>(
car.GetEngine,
procedure ( const engine: TEngine )
begin
if (car.Manufacturer = TManufacturer.VW) and (engine.&Type = TEngineType.DIESEL ) then
service.Schedule( car );
end );
end );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)