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
.
-
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 ;
[ logicVar1 = uttryck1 ; logicVar2 = uttryck2 ; ...] ;
resultat
)
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
Returnerar resultatet av 5 upphöjt till 3. Let-uttrycket fastställer initialt värde
till 5 och potensen
till 3. Beräkningen loopar flera gånger tills resultatet
5 * 5 * 5 = 125 uppnås.
Let (
[
värde = 5 ;
potens = 3
] ;
While (
[ resultat = värde ; i = 1 ] ;
i < potens ;
[ i = i + 1 ; resultat = resultat * värde ] ;
resultat
)
)
Exempel 2
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 3
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 4
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
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
(
[ // initialaVariabler; 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 logikparametern 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