Linguaggio

MethodHandles.CountedLoop Metodo

Definizione

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.

Documentazione java per java.lang.invoke.MethodHandles.countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

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.

Documentazione java per java.lang.invoke.MethodHandles.countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

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