MethodHandles.CountedLoop 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.
Overload
| Nome | Descrizione |
|---|---|
| CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle) |
Costruisce un ciclo che conta su un intervallo di numeri. |
| CountedLoop(MethodHandle, MethodHandle, MethodHandle) |
Costruisce un ciclo che esegue un determinato numero di iterazioni. |
CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)
Costruisce un ciclo che conta su un intervallo di numeri.
[Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? CountedLoop(Java.Lang.Invoke.MethodHandle? start, Java.Lang.Invoke.MethodHandle? end, Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? body);
[<Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member CountedLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle
Parametri
- start
- MethodHandle
handle nonnull per restituire il valore iniziale del contatore del ciclo, che deve essere int.
Vedere sopra per altri vincoli.
- end
- MethodHandle
handle diversonull da per restituire il valore finale del contatore del ciclo (il ciclo verrà eseguito su end-1). Il tipo di risultato deve essere int. Vedere sopra per altri vincoli.
- 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 nel caso standard (vedere sopra per informazioni dettagliate).
Deve accettare il proprio tipo restituito (se non void) più un int parametro (per il contatore) e può accettare un numero qualsiasi di tipi aggiuntivi.
Vedere sopra per altri vincoli.
Valori restituiti
handle di metodo che rappresenta il ciclo.
- Attributi
Commenti
Costruisce un ciclo che conta su un intervallo di numeri. Si tratta di un wrapper pratico per il combinatore di cicli generici #loop(MethodHandle[][]).
Il contatore i del ciclo è una variabile di iterazione del ciclo di tipo int. Gli start handle e end determinano i valori iniziale (inclusivo) e finale (esclusivo) del contatore del ciclo. Il contatore del ciclo verrà inizializzato sul int valore restituito dalla valutazione dell'handle start ed eseguito al valore restituito ( end esclusivamente) con una larghezza del passaggio pari a 1.
Se l'handle body restituisce un tipo Vdiversovoid da , è presente anche una variabile di iterazione del ciclo iniziale di tale tipo. Questa variabile viene inizializzata usando l'handle facoltativo init o per il valore predefinito #empty di tipo V se tale handle è null.
In ogni iterazione, le variabili di iterazione vengono passate a una chiamata dell'handle body .
void Un valore non restituito dal corpo (di tipo V) aggiorna la variabile di iterazione iniziale. Il risultato dell'esecuzione dell'handle di ciclo sarà il valore finale V di tale variabile (o void se non è presente alcuna V variabile).
Le regole seguenti contengono l'argomento handle:<ul><li>Gli start handle e end non devono essere nulle devono restituire entrambi il tipo intcomune , indicato qui come I negli elenchi dei tipi di parametro.
<li>L'handle non deve essere null. Il body relativo tipo deve essere del formato (V I A...)V, dove V non èvoid oppure (I A...)void. Nel void caso in cui il tipo void venga assegnato al nome Ve si scriverà (V I A...)V con la comprensione che un void tipo V viene eliminato tranquillamente dall'elenco dei parametri, lasciando (I A...)V.) <li>L'elenco (V I A...) dei parametri del corpo contribuisce a un elenco di tipi denominati <em>internal parameter list</em>. Vincola gli elenchi di parametri delle altre parti del ciclo.
<li>Come caso speciale, se il corpo contribuisce solo V e I tipi, senza tipi aggiuntivi A , l'elenco di parametri interni viene esteso dai tipi A... di argomento dell'handle end .
<li>Se i tipi di (V I) variabile di iterazione vengono eliminati dall'elenco dei parametri interni, l'elenco (A...) più breve risultante è denominato <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 un parametro iniziale 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'elenco dei parametri di start (di qualche forma (A*)) deve essere effettivamente identico all'elenco (A...)di parametri esterni .
<li>Analogamente, l'elenco di parametri di end deve essere effettivamente identico all'elenco di parametri esterni.
</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 seconda variabile del ciclo, nonché il tipo di risultato del ciclo e A.../a... rappresentare gli argomenti passati al ciclo.
<blockquote>
{@code
int start(A...);
int end(A...);
V init(A...);
V body(V, int, A...);
V countedLoop(A... a...) {
int e = end(a...);
int s = start(a...);
V v = init(a...);
for (int i = s; i < e; ++i) {
v = body(v, i, a...);
}
return v;
}
}
</blockquote>
Aggiunta in 9.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.
Si applica a
CountedLoop(MethodHandle, MethodHandle, MethodHandle)
Costruisce un ciclo che esegue un determinato numero di iterazioni.
[Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? CountedLoop(Java.Lang.Invoke.MethodHandle? iterations, Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? body);
[<Android.Runtime.Register("countedLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member CountedLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle
Parametri
- iterations
- MethodHandle
null un handle non per restituire il numero di iterazioni che questo ciclo deve essere eseguito. Il tipo di risultato dell'handle deve essere int. Vedere sopra per altri vincoli.
- 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 nel caso standard (vedere sopra per informazioni dettagliate).
Deve accettare il proprio tipo restituito (se non void) più un int parametro (per il contatore) e può accettare un numero qualsiasi di tipi aggiuntivi.
Vedere sopra per altri vincoli.
Valori restituiti
handle di metodo che rappresenta il ciclo.
- Attributi
Commenti
Costruisce un ciclo che esegue un determinato numero di iterazioni. Si tratta di un wrapper pratico per il combinatore di cicli generici #loop(MethodHandle[][]).
Il numero di iterazioni è determinato dal risultato della valutazione dell'handle iterations . Il contatore i del ciclo è una variabile di iterazione del ciclo extra di tipo int. Verrà inizializzato su 0 e incrementato di 1 in ogni iterazione.
Se l'handle body restituisce un tipo Vdiversovoid da , è presente anche una variabile di iterazione del ciclo iniziale di tale tipo. Questa variabile viene inizializzata usando l'handle facoltativo init o per il valore predefinito #empty di tipo V se tale handle è null.
In ogni iterazione, le variabili di iterazione vengono passate a una chiamata dell'handle body .
void Un valore non restituito dal corpo (di tipo V) aggiorna la variabile di iterazione iniziale. Il risultato dell'esecuzione dell'handle di ciclo sarà il valore finale V di tale variabile (o void se non è presente alcuna V variabile).
Le regole seguenti contengono l'argomento handle:<ul><li>L'handle iterations non deve essere nulle deve restituire il tipo int, indicato qui come I negli elenchi di tipi di parametro.
<li>L'handle non deve essere null. Il body relativo tipo deve essere del formato (V I A...)V, dove V non èvoid oppure (I A...)void. Nel void caso in cui il tipo void venga assegnato al nome Ve si scriverà (V I A...)V con la comprensione che un void tipo V viene eliminato tranquillamente dall'elenco dei parametri, lasciando (I A...)V.) <li>L'elenco (V I A...) dei parametri del corpo contribuisce a un elenco di tipi denominati <em>internal parameter list</em>. Vincola gli elenchi di parametri delle altre parti del ciclo.
<li>Come caso speciale, se il corpo contribuisce solo V e I tipi, senza tipi aggiuntivi A , l'elenco di parametri interni viene esteso dai tipi A... di argomento dell'handle iterations .
<li>Se i tipi di (V I) variabile di iterazione vengono eliminati dall'elenco dei parametri interni, l'elenco (A...) più breve risultante è denominato <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 un parametro iniziale 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'elenco dei parametri di iterations (di qualche forma (A*)) deve essere effettivamente identico all'elenco (A...)di parametri esterni .
</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 seconda variabile del ciclo, nonché il tipo di risultato del ciclo e A.../a... rappresentare gli argomenti passati al ciclo.
<blockquote>
{@code
int iterations(A...);
V init(A...);
V body(V, int, A...);
V countedLoop(A... a...) {
int end = iterations(a...);
V v = init(a...);
for (int i = 0; i < end; ++i) {
v = body(v, i, a...);
}
return v;
}
}
</blockquote>
Aggiunta in 9.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.