« Foreach pattern (langage) » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
{{new|Thaoe}} | {{new|Thaoe}} | ||
=== | ===ForEachP pattern=== | ||
Le pattern | Le pattern foreachP permet de réaliser une énumération sur une collection supportant les énumérations. | ||
Les différentes syntaxes de ce pattern sont : | Les différentes syntaxes de ce pattern sont : | ||
<pre> | <pre> | ||
foreachP V in|from C [index I] [with [distinct|global|long] transaction] [on except break|continue] do Statement | |||
</pre> | </pre> | ||
Version du 15 septembre 2011 à 13:50
| stock}} |
ForEachP pattern
Le pattern foreachP permet de réaliser une énumération sur une collection supportant les énumérations.
Les différentes syntaxes de ce pattern sont :
foreachP V in|from C [index I] [with [distinct|global|long] transaction] [on except break|continue] do Statement
- V variable de boucle
- Doit être du type de l'énumération
| Tip : Certains énumérateurs supportent un type par défaut pour la variable de boucle, ceci permet de définir la variable de boucle dans l'instruction sans définir son type |
- in|from
- Mode de gestion de l'énumération
| in | Get | L'instance est obtenue de l'énumération |
| from | GetAndRemove | L'instance est obtenue puis retirée de l'énumération |
- C
- Collection énumérable
- index I
- Index de boucle
- with transaction
- Mode de gestion de transaction
| aucun | Pas de gestion de transaction |
| distinct | Une transaction par corps de boucle. |
| global | Une transaction pour l'ensemble de la boucle. |
| long | Une transaction longue pour l'ensemble du corps de boucle. |
- on except
- Mode de gestion des exceptions
| aucun | Une exception arrête l'instruction et est propagée. |
| break | Une exception arrête l'instruction et est propagée. |
| continue | Une exception est trappée et n'arrête pas l'instruction. |
Exemple :
<source lang="delphi"> var list:WFClasseAList; inst:WFClasseA; cursor:WFClasseACursor; count:Integer; tk:Int64; begin
List := WFClasseA.CreateList; Cursor := WFClasseA.CreateCursorWhere(,,true,['A',1]);
foreachP inst in cursor index count with long transaction do
begin
List.AddRef(inst);
if List.Count=100 then
begin
parallel doProcessList(List);
List.Clear;
end;
end;
end; </source>
Variable de boucle définie dans l'instruction :
<source lang="delphi"> var list:WFClasseAList; cursor:WFClasseACursor; count:Integer; tk:Int64; begin
List := WFClasseA.CreateList; Cursor := WFClasseA.CreateCursorWhere(,,true,['A',1]);
foreachP var inst:WFClasseA in cursor index count with long transaction do
begin
List.AddRef(inst);
if List.Count=100 then
begin
parallel doProcessList(List);
List.Clear;
end;
end;
end; </source>
Variable de boucle typée par l'énumération :
<source lang="delphi"> var list:WFClasseAList; cursor:WFClasseACursor; count:Integer; tk:Int64; begin
List := WFClasseA.CreateList; Cursor := WFClasseA.CreateCursorWhere(,,true,['A',1]);
foreachP var inst in cursor index count with long transaction do
begin
List.AddRef(inst);
if List.Count=100 then
begin
parallel doProcessList(List);
List.Clear;
end;
end;
end; </source>