Sprache

MethodHandles.WhileLoop(MethodHandle, MethodHandle, MethodHandle) Methode

Definition

Erstellt eine while Schleife aus einem Initialisierer, einem Textkörper und einem Prädikat.

[Android.Runtime.Register("whileLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? WhileLoop(Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? pred, Java.Lang.Invoke.MethodHandle? body);
[<Android.Runtime.Register("whileLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member WhileLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle

Parameter

init
MethodHandle

optionaler Initialisierer, der den Anfangswert der Schleifenvariable bereitstellt. Kann sein null, was einen Standardwert bedeutet. Weitere Einschränkungen finden Sie oben.

pred
MethodHandle

-Bedingung für die Schleife, die möglicherweise nicht sein nullkann. Der Ergebnistyp muss sein boolean. Weitere Einschränkungen finden Sie oben.

body
MethodHandle

Textkörper der Schleife, die möglicherweise nicht sein nullkann. Sie steuert die Schleifenparameter und den Ergebnistyp. Weitere Einschränkungen finden Sie oben.

Gibt zurück

eine Methode behandelt die Implementierung der while Schleife, wie durch die Argumente beschrieben.

Attribute

Hinweise

Erstellt eine while Schleife aus einem Initialisierer, einem Textkörper und einem Prädikat. Dies ist ein Komfortwrapper für den generischen #loop(MethodHandle[][])-Schleifenkombinator.

Der pred Ziehpunkt beschreibt die Schleifenbedingung und bodyden Textkörper. Die Schleife, die sich aus dieser Methode ergibt, wertet in jeder Iteration zuerst das Prädikat aus und führt dann den Text aus (wenn das Prädikat ausgewertet wird true). Die Schleife wird beendet, sobald das Prädikat ausgewertet false wird (in diesem Fall wird der Textkörper nicht ausgeführt).

Das init Handle beschreibt den Anfangswert einer zusätzlichen optionalen loop-local-Variablen. In jeder Iteration wird diese loop-local-Variable (sofern vorhanden) an den body von seinem Aufruf zurückgegebenen Wert übergeben und aktualisiert. Das Ergebnis der Schleifenausführung ist der endwert der zusätzlichen loop-local variable (sofern vorhanden).

Die folgenden Regeln halten für diese Argumenthandles:<ul><>Li Der body Handle darf nicht seinnull; sein Typ muss dem Formular (V A...)Ventsprechen, wobei V es sich nicht um einenvoid Fehler oder einen anderen (A...)voidWert handelt. (In dem void Fall weisen wir den Typ void dem Namen Vzu, und wir schreiben (V A...)V mit dem Verständnis, dass ein void Typ V ruhig aus der Parameterliste gelöscht wird, und verlassen (A...)V.) <li>Die Parameterliste (V A...) des Textkörpers wird als <em>interne Parameterliste</em> bezeichnet. Sie schränkt die Parameterlisten der anderen Schleifenteile ein. <li>Wenn der Iterationsvariablentyp V aus der internen Parameterliste verworfen wird, wird die resultierende kürzere Liste (A...) als <em>externe Parameterliste</em> bezeichnet. <li>Der Rückgabetyp Vdes Textkörpers bestimmt, falls nicht, den Typ einer zusätzlichen Zustandsvariablenvoid der Schleife. Der Textkörper muss einen Wert dieses Typs Vakzeptieren und zurückgeben. <li>Ist init dies nicht dernull Wert, muss sie den Rückgabetyp Vaufweisen. Die Parameterliste (in form <c>(A*)</c>) muss effektiv mit der externen Parameterliste (A...)identisch sein. <li>If init is null, the loop variable will be initialized to its #empty default value. <li>Der pred Griff darf nicht sein null. Er muss als Rückgabetyp aufweisen boolean . Die Parameterliste (entweder leer oder des Formulars (V A*)) muss effektiv mit der internen Parameterliste identisch sein. </ul>

Der Ergebnistyp und die Parametersignatur des resultierenden Schleifenziehpunkts werden wie folgt bestimmt:<ul<>Li>Der Ergebnistyp des Schleifenziehpunkts ist der Ergebnistyp V des Textkörpers. <li>Die Parametertypen des Schleifenhandles sind die Typen (A...)aus der externen Parameterliste. </ul>

Hier ist pseudocode für den resultierenden Schleifenziehpunkt. Stellen Sie im Code V/v den Typ/Wert der alleinigen Schleifenvariable sowie den Ergebnistyp der Schleife dar; und A/adas argument, das an die Schleife übergeben wird. <Blockquote>

{@code
            V init(A...);
            boolean pred(V, A...);
            V body(V, A...);
            V whileLoop(A... a...) {
              V v = init(a...);
              while (pred(v, a...)) {
                v = body(v, a...);
              }
              return v;
            }
            }

</blockquote>

Hinzugefügt in 9.

Java Dokumentation für java.lang.invoke.MethodHandles.whileLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: