Solange
Wiederholt Logik, solange die Bedingung wahr ist und gibt dann das Ergebnis zurück.
Format
Solange ( [ InitialVariable ] ; Bedingung ; [ Logik ] ; Ergebnis )
Parameter
initialVariable
- Variablendefinitionen, die zur Verwendung in den folgenden Parametern verfügbar sind.
Bedingung
- ein Boolescher Ausdruck, der vor jeder Schleifeniteration berechnet wird. Die Schleife wird wiederholt, solange der Ausdruck wahr ergibt. Wenn er falsch ergibt, endet die Schleife.
Logik
- Variablendefinitionen, die bei jeder Wiederholung der Schleife berechnet werden.
Ergebnis
- ein Ausdruck, der zurückgegeben wird, wenn die Schleife stoppt.
Zurückgegebener Datentyp
Text, Zahl, Datum, Zeit, Zeitstempel, Container
Ursprung in Version
18.0
Beschreibung
Die Funktion „Solange“ führt die folgenden Schritte aus:
-
Berechnet den Parameter
InitialVariable
. -
Berechnet den Parameter
Bedingung
. -
Wenn die
Bedingung
Folgendes ergibt:-
Wahr (jedes Zahlenergebnis ungleich null), wird
Logik
berechnet und dann Schritt 2 wiederholt. -
Falsch (0), wird die Schleife beendet und
Ergebnis
zurückgegeben.
-
Sie können mehrere Variablendefinitionen für InitialVariable
und Logik
angeben, indem Sie sie in eckige Klammern [ ] setzen und sie jeweils durch ein Semikolon trennen. Beispiel:
Solange (
[ InitVar1 = Wert1 ; InitVar2 = Wert2 ; ...] ;
Bedingung ;
[ LogikVar1 = Ausdruck1 ; LogikVar2 = Ausdruck2 ; ...] ;
Ergebnis
)
Die in den Parametern InitialVariable
und Logik
angegebenen Variablen werden von links nach rechts berechnet. Diese Variablen befinden sich im selben Geltungsbereich und können in den Parametern Bedingung
und Ergebnis
verwendet werden. Weitere Informationen finden Sie unter Verwenden von Variablen.
Variablen, die Informationen von einer Schleifeniteration zur nächsten übernehmen sollen, müssen initialisiert werden, bevor sie im Parameter Logik
verwendet werden. Andernfalls werden ihre Werte gelöscht.
Hinweise
-
Zur Vermeidung von Endlosschleifen, bei denen FileMaker-Clients nicht mehr reagieren würden, gibt diese Funktion „?“ zurück, sobald die Anzahl der Schleifenwiederholungen ein Limit überschreitet. Verwenden Sie die Funktion „SetzeRekursion“, um das Limit festzulegen.
Beispiel 1
Gibt das Ergebnis von 5 hoch 3 zurück. Die SetzeVar-Anweisung legt den Anfangswert
von 5 und die Potenz
von 3 fest. Die Berechnung läuft in mehreren Schleifen ab, bis das Ergebnis
5 * 5 * 5 = 125 erreicht ist.
SetzeVar (
[
Wert = 5 ;
Potenz = 3
] ;
Solange (
[ Ergebnis = Wert ; i = 1 ] ;
i < Potenz ;
[ i = i + 1 ; Ergebnis = Ergebnis * Wert ] ;
Ergebnis
)
)
Beispiel 2
Addiert die Werte in der wiederholenden Variablen $a
. Jede Schleifeniteration erhöht Anzahl
, verwendet diese um die Variablenwiederholung $a
anzugeben und addiert den Wert zur laufenden Summe
. Dieses Beispiel gibt 150 zurück.
Solange (
[
Zähler = 0 ;
Gesamt = 0 ;
$a[1] = 25 ;
$a[2] = 50 ;
$a[3] = 75
] ;
Zähler < 3 ;
[
Zähler = Zähler + 1 ;
Gesamt = Gesamt + $a[Zähler]
] ;
Gesamt
)
Beispiel 3
Fügt fünf Punkte zwischen zwei Textwerte. Der Geltungsbereich der Funktionsvariablen Ort
in der Funktion „Solange“ unterscheidet sich von derjenigen in „SetzeVar“. Dieses Beispiel gibt also San Francisco.....Paris zurück.
SetzeVar (
Ort = "Paris";
Solange (
[ Ort = "San Francisco"; i = 0 ] ;
i < 5 ;
[
i = i + 1 ;
Ort = Ort & "."
] ;
Ort
)
& Ort )
Wenn jede Instanz der Funktionsvariable Ort
durch die lokale Variable $Ort
ersetzt würde, würde das Beispiel San Francisco.....San Francisco....., da $Ort
während der gesamten Rechnung denselben Geltungsbereich hat.
Beispiel 4
Illustriert, wie sich der Geltungsbereich von Funktionsvariablen unterscheidet, wenn diese vor einer „Solange“-Schleife definiert werden im Unterschied zur Definition in den Parametern InitialVariable
und Logik
innerhalb der Schleife.
Die Werte von it1
und it2
, die vor der Schleife definiert werden, sind innerhalb der Schleife verfügbar. Jedoch beeinflussen Änderungen an it1
und it2
, die innerhalb der Schleife erfolgen, nicht die Werte dieser Variablen nach der Schleife. Dieses Beispiel zeigt auch, dass der Wert 2 der Variablen it2
, die im Parameter Logik
definiert ist, nach jeder Schleifeniteration verloren geht, da it2
nicht im Parameter InitialVariable
initialisiert wird.
SetzeVar (
[ // Vor „Solange“-Schleife; legt Zeile 1.0 von Ergebnis fest
it1 = "a"; // Definiert im Geltungsbereich SetzeVar
t2 = 1; // Definiert im Geltungsbereich SetzeVar
out = "1.0 " & it1 & " " & it2 & ¶
];
Solange
(
[ // InitialVariablen; legt Zeilen 2.0 und 3.0 von Ergebnis fest
i = 0;
out = out & "2.0 " & it1 & " " & it2 & ¶;
it1 = "b"; // Definiert im Geltungsbereich von „Solange“
out = out & "3.0 " & it1 & " " & it2 & ¶
];
// Bedingung
i < 2;
[ // Logik; legt Zeilen 4.x und 5.x von Ergebnis fest
// Variablen, die im Logik-Parameter von vorherigen Durchgängen
// durch die Schleife definiert wurden, werden jetzt gelöscht
i = i + 1;
out = out & "4." & i & " " & it1 & " " & it2 & ¶;
it1 = "c"; // Wiederverwendet im Geltungsbereich von „Solange“
it2 = 2; // Neu definiert im Geltungsbereich von „Solange“
out = out & "5." & i & " " & it1 & " " & it2 & ¶
];
// Ergebnis; legt Zeile 6.0 von Ergebnis fest
out & "6.0 " & it1 & " " & it2 & ¶
)
// Nach „Solange“-Schleife; legt Zeile 7.0 von Ergebnis fest
& "7.0 " & it1 & " " & it2 & ¶
)
Das Ergebnis ist:
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