While
Herhaalt logica wanneer de voorwaarde waar is en geeft vervolgens het resultaat.
Opmaak
While ([ beginVariabele ] ; voorwaarde ; [ logica ] ; resultaat)
Parameters
beginVariabele
- definities voor variabelen die beschikbaar zijn voor gebruik in de volgende parameters.
voorwaarde
- een logische uitdrukking die voor iedere iteratie van een lus wordt geëvalueerd. Wanneer deze Waar is, wordt de lus herhaald. Wanneer deze Onwaar is, stopt de lus.
logica
- definities van variabelen die iedere keer dat de lus wordt herhaald, worden geëvalueerd.
resultaat
- een uitdrukking die wordt geretourneerd wanneer de lus stopt.
Resulterend gegevenstype
tekst, getal, datum, tijd, tijdstempel, container
Afkomstig uit versie
18.0
Beschrijving
De functie While voert de volgende stappen uit:
- Evalueert de parameter voor
beginVariabele
. - Evalueert de parameter voor
voorwaarde
. - Als
voorwaarde
de volgende resultaten oplevert:- Waar (elk numeriek resultaat dat niet nul is), evalueert deze
logica
en herhaalt deze stap 2. - Onwaar (0), stopt deze de lus en retourneert deze
resultaat
.
- Waar (elk numeriek resultaat dat niet nul is), evalueert deze
U kunt meerdere definities opgeven voor de variabelen beginVariabele
en logica
. Dit doet u door de definities tussen vierkante haken [ ] te plaatsen en de definities van elkaar te scheiden door middel van een puntkomma. Bijvoorbeeld:
While (
[ beginVar1 = waarde1 ; beginVar2 = waarde2 ; ...] ;
voorwaarde ;
[ logicVar1 = uitdrukking1 ; logicVar2 = uitdrukking2 ; ...] ;
result
)
De variabelen die zijn opgegeven in de parameters beginVariabele
en logica
worden van links naar rechts geëvalueerd. Deze variabelen bevinden zich binnen hetzelfde bereik en kunnen worden gebruikt voor de parameters voorwaarde
en resultaat
. Raadpleeg Variabelen gebruiken.
Variabelen die informatie moeten behouden tussen één iteratie van een lus en de volgende, moeten worden geïnitialiseerd voordat ze worden gebruikt in de parameter logica
. Anders worden de betreffende waarden verwijderd.
Opmerkingen
- Deze functie geeft "?" als resultaat wanneer het aantal iteraties van lussen een bepaalde limiet overschrijdt. Zo wordt voorkomen dat er oneindige lussen ontstaan, die er uiteindelijk voor zorgen dat FileMaker-clients niet meer reageren. Gebruik de SetRecursion functie om de limiet in te stellen.
Voorbeeld 1
Berekent de som van de waarden in de herhalende variabele $a
. Bij iedere herhaling van een lus wordt aantal
verhoogd, wordt deze variabele gebruikt om de herhaling van variabele $a
in te stellen en wordt deze waarde opgeteld bij het lopende totaal
. In dit voorbeeld is het resultaat 150.
While (
[
aantal = 0 ;
totaal = 0 ;
$a[1] = 25 ;
$a[2] = 50 ;
$a[3] = 75
] ;
aantal < 3 ;
[
aantal = aantal + 1 ;
totaal = totaal + $a[aantal]
] ;
totaal
)
Voorbeeld 2
Plaatst vijf punten tussen twee tekstwaarden. Het bereik van de functievariabele Stad
in de functie While staat los van die in Let, dus dit voorbeeld geeft als resultaat San Francisco.....Parijs.
Let (
Stad = "Parijs";
While (
[ Stad = "San Francisco"; i = 0 ] ;
i < 5 ;
[
i = i + 1 ;
Stad = Stad & "."
] ;
Stad
)
& Stad)
Als iedere vermelding van de functievariabele Stad
zou worden vervangen door de lokale variabele $Stad
, geeft het voorbeeld als resultaat San Francisco.....San Francisco....., omdat $Stad
hetzelfde bereik heeft gedurende de hele berekening.
Voorbeeld 3
Geeft aan hoe het bereik van functievariabelen verschilt wanneer deze voor een While-lus worden gedefinieerd in vergelijking met wanneer deze worden gedefinieerd in de parameters beginVariabele
en logica
van de While-lus.
De waarden van it1
en it2
die voor de While-lus zijn gedefinieerd, zijn binnen de lus beschikbaar, maar wijzigingen die binnen de lus worden aangebracht in it1
en it2
, hebben geen invloed op de waarden van deze variabelen na de lus. Dit voorbeeld laat ook zien hoe de waarde 2 van de variabele it2
, die in de parameter logica
is gedefinieerd, na iedere iteratie van een lus verloren gaat, omdat it2
niet is geïnitialiseerd in de parameter beginVariabele
.
Let (
[ // Voor While-lus; geeft regel 1.0 van resultaat weer
it1 = "a"; // Gedefinieerd in het bereik van Let
it2 = 1; // Gedefinieerd in het bereik van Let
uit = "1.0 " & it1 & " " & it2 & ¶
];
While
(
[ // beginVariabele; geeft regel 2.0 en 3.0 van resultaat weer
i = 0;
uit = uit & "2.0 " & it1 & " " & it2 & ¶;
it1 = "b"; // Gedefinieerd in het bereik van While
uit = uit & "3.0 " & it1 & " " & it2 & ¶
];
// Voorwaarde
i < 2;
[ // logica; geeft regel 4.x en 5.x van resultaat weer
// Variabelen die in de parameter logica zijn gedefinieerd tijdens eerdere herhalingen
// van de lus worden op dit punt verwijderd
i = i + 1;
uit = uit & "4." & i & " " & it1 & " " & it2 & ¶;
it1 = "c"; // Opnieuw gebruikt in het bereik van While
it2 = 2; // Opnieuw gedefinieerd in het bereik van While
uit = uit & "5." & i & " " & it1 & " " & it2 & ¶
];
// resultaat; geeft regel 6.0 van resultaat weer
uit & "6.0 " & it1 & " " & it2 & ¶
)
// Na While-lus; geeft regel 7.0 van resultaat weer
& "7.0 " & it1 & " " & it2 & ¶
)
Het resultaat is:
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