MethodHandles.DoWhileLoop(MethodHandle, MethodHandle, MethodHandle) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Costruisce un do-while ciclo da un inizializzatore, un corpo e un predicato.
[Android.Runtime.Register("doWhileLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? DoWhileLoop(Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? body, Java.Lang.Invoke.MethodHandle? pred);
[<Android.Runtime.Register("doWhileLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member DoWhileLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle
Parametri
- init
- MethodHandle
inizializzatore facoltativo, specificando il valore iniziale della variabile di ciclo.
Può essere null, implicando un valore iniziale predefinito. Vedere sopra per altri vincoli.
- body
- MethodHandle
corpo del ciclo, che potrebbe non essere null. Controlla i parametri del ciclo e il tipo di risultato.
Vedere sopra per altri vincoli.
- pred
- MethodHandle
condizione per il ciclo, che potrebbe non essere null. Il tipo di risultato deve essere boolean. Vedere sopra per altri vincoli.
Valori restituiti
handle di metodo che implementa il while ciclo come descritto dagli argomenti.
- Attributi
Commenti
Costruisce un do-while ciclo da un inizializzatore, un corpo e un predicato. Si tratta di un wrapper pratico per il combinatore di cicli generici #loop(MethodHandle[][]).
L'handle pred descrive la condizione del ciclo e body, il relativo corpo. Il ciclo risultante da questo metodo, in ogni iterazione, esegue prima il corpo e quindi valuta il predicato. Il ciclo terminerà una volta che il predicato restituisce false dopo un'esecuzione del corpo.
L'handle init descrive il valore iniziale di una variabile facoltativa a ciclo locale aggiuntiva. In ogni iterazione, questa variabile locale del ciclo, se presente, verrà passata a body e aggiornata con il valore restituito dalla chiamata. Il risultato dell'esecuzione del ciclo sarà il valore finale della variabile locale del ciclo aggiuntiva (se presente).
Le regole seguenti contengono per questi handle di argomento:<ul><li>L'handle non deve essere null. Il body relativo tipo deve essere del formato (V A...)V, dove V non èvoid oppure (A...)void. Nel void caso in cui il tipo void venga assegnato al nome Ve si scriverà (V A...)V con la comprensione che un void tipo V viene eliminato tranquillamente dall'elenco dei parametri, lasciando (A...)V.) <li>L'elenco (V A...) dei parametri del corpo è denominato <em>internal parameter list</em>. Vincola gli elenchi di parametri delle altre parti del ciclo.
<li>Se il tipo di V variabile di iterazione viene eliminato dall'elenco dei parametri interni, l'elenco (A...) più breve risultante viene chiamato em <>external parameter list</em>.
<li>Il tipo Vrestituito del corpo , se nonvoid, determina il tipo di una variabile di stato aggiuntiva del ciclo. Il corpo deve accettare e restituire un valore di questo tipo V.
<li>Se init è diversonull da , deve avere il tipo Vrestituito . Il relativo elenco di parametri (di una forma <c>(A*)</c>) deve essere effettivamente identico all'elenco (A...)di parametri esterni .
<li>Se init è null, la variabile di ciclo verrà inizializzata nel relativo valore predefinito #empty.
<li>L'handle pred non deve essere null. Deve avere boolean come tipo restituito. Il relativo elenco di parametri (vuoto o di formato (V A*)) deve essere effettivamente identico all'elenco di parametri interni.
</ul>
Il tipo di risultato e la firma del parametro dell'handle di ciclo risultante vengono determinati come segue:<ul<>li>Il tipo di risultato dell'handle del ciclo è il tipo V di risultato del corpo.
<li>I tipi di parametro dell'handle di ciclo sono i tipi (A...), dall'elenco di parametri esterni.
</ul>
Di seguito è riportato lo pseudocodice per l'handle di ciclo risultante. Nel codice rappresentare V/v il tipo/valore della variabile del ciclo unico, nonché il tipo di risultato del ciclo e A/a, quello dell'argomento passato al ciclo.
<blockquote>
{@code
V init(A...);
boolean pred(V, A...);
V body(V, A...);
V doWhileLoop(A... a...) {
V v = init(a...);
do {
v = body(v, a...);
} while (pred(v, a...));
return v;
}
}
</blockquote>
Aggiunta in 9.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.