Foreach pattern (langage)

De Wiki1000
(Différences entre les versions)
(Page créée avec « ===ForEach pattern=== Le pattern foreach permet de réaliser une énumération sur une collection supportant les énumérations. Category:Langage [[Category:Code pattern… »)
 
Ligne 1 : Ligne 1 :
 
===ForEach pattern===
 
===ForEach pattern===
 
Le pattern foreach permet de réaliser une énumération sur une collection supportant les énumérations.
 
Le pattern foreach permet de réaliser une énumération sur une collection supportant les énumérations.
 +
 +
Les différentes syntaxes de ce pattern sont :
 +
 +
<pre>
 +
foreach V in|from C [index I] [with [distinct|global|long] transaction] [on except break|continue]  do Statement
 +
</pre>
 +
 +
*V variable de boucle
 +
:Doit être du type de l'énumération
 +
 +
*in|from
 +
:Mode de gestion de l'énumération
 +
 +
{| class="wikitable"
 +
|-
 +
|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
 +
 +
{| class="wikitable"
 +
|-
 +
|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
 +
 +
{| class="wikitable"
 +
|-
 +
|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>
 +
  
 
[[Category:Langage]]
 
[[Category:Langage]]
 
[[Category:Code pattern]]]
 
[[Category:Code pattern]]]

Version du 20 avril 2010 à 12:25

ForEach pattern

Le pattern foreach permet de réaliser une énumération sur une collection supportant les énumérations.

Les différentes syntaxes de ce pattern sont :

foreach 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
  • 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 :

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;
]



Whos here now:   Members 0   Guests 1   Bots & Crawlers 0
 
Outils personnels