Referens > Funktioner > Logiska funktioner > While
 

While

Upprepar logik medan villkoret är sant och returnerar sedan resultatet.

Format 

While ( [ initialVariabel ] ; villkor ; [ logik ] ; resultat )

Parametrar 

initialVariabelvariabeldefinitioner 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

Kommer från 

FileMaker Pro 18.0 Advanced

Beskrivning 

While-funktionen utför följande steg:

1. Utvärderar parametern initialVariabel.

2. Utvärderar parametern villkor.

3. 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 ;
[ 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 $City 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

Relaterade avsnitt 

Funktioner (efter kategori)

Funktioner (i bokstavsordning)

Om formler

Om funktioner

Definiera beräkningsfält

Använda operatorer i formler