While
Upprepar logik medan villkoret är sant och returnerar sedan resultatet.
Format
While ( [ initialVariabel ] ; villkor ; [ logik ] ; resultat )
Parametrar
initialVariabel
– variabeldefinitioner som blir tillgängliga att använda i följande parametrar.
villkor
– ett booleskt uttryck som utvärderas före varje loopupprepning. Så länge det är Sant upprepas loopen. När det är Falskt stoppas loopen.
logik
– variabeldefinitioner som utvärderas varje gång loopen upprepas.
resultat
– ett uttryck som returneras när loopen stoppas.
Returnerad datatyp
Text, numeriskt, datum, tid, tidsstämpel, container
Ursprungsversion
18.0
Beskrivning
While-funktionen utför följande steg:
- Utvärderar parametern
initialVariabel
. - Utvärderar parametern
villkor
. - Om
villkor
är:- Sant (alla numeriska resultat som inte är noll), utvärderar
logik
och upprepar sedan steg 2. - Falskt (0), stoppar loopen och returnerar
resultat
.
- Sant (alla numeriska resultat som inte är noll), utvärderar
Du kan ange flera variabeldefinitioner för initialVariabel
och logik
genom att omsluta dem med hakparenteser [ ] och avgränsa dem med ett semikolon. Till exempel:
While (
[ initVar1 = värde1 ; initVar2 = värde2 ; ...] ;
villkor ;
[ logikVar1 = uttryck1 ; logikVar2 = uttryck2 ; ...] ;
result
)
Variablerna som anges i parametrarna initialVariabel
och logik
utvärderas från vänster till höger. Dessa variabler är inom samma räckvidd och kan användas i parametrarna villkor
och resultat
. Mer information finns i Använda variabler.
Variabler som behöver bevara information från en loopupprepning till nästa måste initialiseras innan de användas i parametern logik
. I annat fall raderas deras värden.
Kommentarer
- För att förhindra oändliga loopar som skulle göra att FileMaker-klienter slutar att svara returnerar den här funktionen "?" när antalet loopupprepningar överstiger en gräns. Ange gränsen med hjälp av Funktionen SetRecursion.
Exempel 1
Summerar värdena i den upprepande variabeln $a
. Varje loopupprepning ökar stegvis antal
, använder det för att ange variabelrepetitionen $a
och lägger till värdet till det löpande totalt
. Det här exemplet returnerar 150.
While (
[
antal = 0 ;
totalt = 0 ;
$a[1] = 25 ;
$a[2] = 50 ;
$a[3] = 75
] ;
antal < 3 ;
[
antal = antal + 1 ;
totalt = totalt + $a[antal]
] ;
totalt
)
Exempel 2
Lägger till fem punkter mellan två textvärden. Räckvidden för funktionsvariabeln Ort
i While-funktionen skiljer sig från den i Let, så det här exemplet returnerar San Francisco.....Paris.
Let(
Ort = "Paris";
While (
[ Ort = "San Francisco"; i = 0 ] ;
i < 5 ;
[
i = i + 1 ;
Ort = Ort & "."
] ;
Ort
)
& Ort )
Om alla instanser av funktionsvariabeln Ort
skulle ersättas med den lokala variabeln $Ort
, returnerar exemplet San Francisco.....San Francisco....., eftersom $Ort
har samma räckvidd genom hela beräkningen.
Exempel 3
Illustrerar hur funktionsvariablernas räckvidd skiljer sig när de definieras före en While-loop jämfört med när de definieras i While-loopens parametrar initialVariabel
och logik
.
Värdena för it1
och it2
som definierats före While-loopen är tillgängliga i loopen, men ändringar av som görs av it1
och it2
i loppen påverkar inte värdena för dessa variabler efter loopen. Det här exemplet visar också hur värdet 2 för variabeln it2
som definieras i parametern logik
parameter försvinner efter varje loopupprepning eftersom it2
inte initialiseras i parametern initialVariabel
.
Let(
[ // Före While-loop; anger rad 1.0 av resultat
it1 = "a"; // Definieras i räckvidden för Let
it2 = 1; // Definieras i räckvidden för Let
ut = "1.0 " & it1 & " " & it2 & ¶
];
While
(
[ // initialVariabler; anger rad 2.0 och 3.0 av resultat
i = 0;
ut = ut & "2.0 " & it1 & " " & it2 & ¶;
it1 = "b"; // Definieras i räckvidden för While
ut = ut & "3.0 " & it1 & " " & it2 & ¶
];
// Villkor
i < 2;
[ // logik; anger rad 4.x och 5.x av resultat
// Variabler som definierats i logik-parametern i föregående pass
// under loopen raderas vid den här punkten
i = i + 1;
ut = ut & "4." & i & " " & it1 & " " & it2 & ¶;
it1 = "c"; // Återanvänds i räckvidden för While
it2 = 2; // Definieras om i räckvidden för While
ut = ut & "5." & i & " " & it1 & " " & it2 & ¶
];
// resultat; anger rad 6.0 av resultat
ut & "6.0 " & it1 & " " & it2 & ¶
)
[ // Efter While-loop; anger rad 7.0 av resultat
& "7.0 " & it1 & " " & it2 & ¶
)
Resultatet är:
1.0 a 1
2.0 a 1
3.0 b 1
4.1 b 1
5.1 c 2
4.2 c 1
5.2 c 2
6.0 c 2
7.0 a 1