Lenguaje

MethodHandles.CountedLoop Método

Definición

Sobrecargas

Nombre Description
CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)

Construye un bucle que cuenta en un intervalo de números.

CountedLoop(MethodHandle, MethodHandle, MethodHandle)

Construye un bucle que ejecuta un número determinado de iteraciones.

CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)

Construye un bucle que cuenta en un intervalo de números.

[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

Parámetros

start
MethodHandle

un identificador que nonull es para devolver el valor inicial del contador de bucle, que debe ser int. Consulte lo anterior para ver otras restricciones.

end
MethodHandle

un identificador que no esnull para devolver el valor final del contador de bucle (el bucle se ejecutará en end-1). El tipo de resultado debe ser int. Consulte lo anterior para ver otras restricciones.

init
MethodHandle

inicializador opcional, proporcionando el valor inicial de la variable de bucle. Puede ser null, lo que implica un valor inicial predeterminado. Consulte lo anterior para ver otras restricciones.

body
MethodHandle

cuerpo del bucle, que puede no ser null. Controla los parámetros de bucle y el tipo de resultado en el caso estándar (consulte más arriba para obtener más información). Debe aceptar su propio tipo de valor devuelto (si no es nulo) más un int parámetro (para el contador) y puede aceptar cualquier número de tipos adicionales. Consulte lo anterior para ver otras restricciones.

Devoluciones

un identificador de método que representa el bucle.

Atributos

Comentarios

Construye un bucle que cuenta en un intervalo de números. Se trata de un contenedor de conveniencia para el combinador de bucle genérico #loop(MethodHandle[][]).

El contador i de bucle es una variable de iteración de bucle de tipo int. Los start identificadores y end determinan los valores de inicio (inclusivo) y final (exclusivo) del contador de bucles. El contador de bucle se inicializará en el int valor devuelto desde la evaluación del start identificador y se ejecutará hasta el valor devuelto desde end (exclusivamente) con un ancho de paso de 1.

Si el body identificador devuelve un tipo Vdistintovoid de , también existe una variable de iteración de bucle inicial de ese tipo. Esta variable se inicializa mediante el identificador opcional init o en el #empty valor predeterminado de tipo V si ese identificador es null.

En cada iteración, las variables de iteración se pasan a una invocación del body identificador. void Un valor no devuelto desde el cuerpo (de tipo V) actualiza la variable de iteración inicial. El resultado de la ejecución del controlador de bucle será el valor final V de esa variable (o void si no hay ninguna V variable).

Las reglas siguientes contienen para el argumento handles:<ul><li>Los start identificadores y end no deben ser null, y deben devolver el tipo intcomún , al que se hace referencia aquí como I en listas de tipos de parámetros. <li>El body identificador no debe ser null; su tipo debe ser del formato (V I A...)V, donde V no esvoid , o de lo contrario (I A...)void. (En el void caso, asignamos el tipo void al nombre Vy escribiremos (V I A...)V con la comprensión de que un void tipo V se quita silenciosamente de la lista de parámetros, dejando (I A...)V). <li>La lista (V I A...) de parámetros del cuerpo contribuye a una lista de tipos denominados <em>internal parameter list</em>. Restringirá las listas de parámetros de las otras partes del bucle. <li>Como caso especial, si el cuerpo solo contribuye V y I tipos, sin tipos adicionales A , la lista de parámetros internos se extiende por los tipos A... de argumento del end identificador. <li>Si los tipos (V I) de variable de iteración se quitan de la lista de parámetros internos, la lista (A...) más corta resultante se denomina <lista de parámetros<> externos em>. <li>El tipo Vde valor devuelto body , si no es asívoid, determina el tipo de una variable de estado adicional del bucle. El cuerpo debe aceptar un parámetro inicial y devolver un valor de este tipo V. <li>Si init no es asínull, debe tener el tipo Vde valor devuelto . Su lista de parámetros (de alguna forma <c>(A*)</c>) debe ser eficazmente idéntica a la lista (A...)de parámetros externos . <li>Si init es null, la variable de bucle se inicializará en su #empty valor predeterminado. <li>La lista de parámetros de start (de alguna forma (A*)) debe ser eficazmente idéntica a la lista (A...)de parámetros externos . <Del>mismo modo, la lista de parámetros de end debe ser eficazmente idéntica a la lista de parámetros externos. </ul>

El tipo de resultado y la firma de parámetro del controlador de bucle resultante se determinan de la siguiente manera:< ul<>li>El tipo de resultado del controlador de bucle es el tipo V de resultado del cuerpo. <li>Los tipos de parámetro del controlador de bucle son los tipos (A...), de la lista de parámetros externos. </ul>

Este es el pseudocódigo para el identificador de bucle resultante. En el código, V/v representa el tipo /valor de la segunda variable de bucle, así como el tipo de resultado del bucle; y A.../a... representan argumentos pasados al bucle. <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>

Agregado en 9.

Java documentación para java.lang.invoke.MethodHandles.countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a

CountedLoop(MethodHandle, MethodHandle, MethodHandle)

Construye un bucle que ejecuta un número determinado de iteraciones.

[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

Parámetros

iterations
MethodHandle

un identificador que nonull es para devolver el número de iteraciones que debe ejecutar este bucle. El tipo de resultado del identificador debe ser int. Consulte lo anterior para ver otras restricciones.

init
MethodHandle

inicializador opcional, proporcionando el valor inicial de la variable de bucle. Puede ser null, lo que implica un valor inicial predeterminado. Consulte lo anterior para ver otras restricciones.

body
MethodHandle

cuerpo del bucle, que puede no ser null. Controla los parámetros de bucle y el tipo de resultado en el caso estándar (consulte más arriba para obtener más información). Debe aceptar su propio tipo de valor devuelto (si no es nulo) más un int parámetro (para el contador) y puede aceptar cualquier número de tipos adicionales. Consulte lo anterior para ver otras restricciones.

Devoluciones

un identificador de método que representa el bucle.

Atributos

Comentarios

Construye un bucle que ejecuta un número determinado de iteraciones. Se trata de un contenedor de conveniencia para el combinador de bucle genérico #loop(MethodHandle[][]).

El número de iteraciones viene determinado por el resultado de la evaluación del iterations identificador. El contador i de bucle es una variable de iteración de bucle adicional de tipo int. Se inicializará en 0 e incrementará en 1 en cada iteración.

Si el body identificador devuelve un tipo Vdistintovoid de , también existe una variable de iteración de bucle inicial de ese tipo. Esta variable se inicializa mediante el identificador opcional init o en el #empty valor predeterminado de tipo V si ese identificador es null.

En cada iteración, las variables de iteración se pasan a una invocación del body identificador. void Un valor no devuelto desde el cuerpo (de tipo V) actualiza la variable de iteración inicial. El resultado de la ejecución del controlador de bucle será el valor final V de esa variable (o void si no hay ninguna V variable).

Las reglas siguientes contienen para el argumento handles:<ul><li>El iterations identificador no debe ser nully debe devolver el tipo int, al que se hace referencia aquí como I en listas de tipos de parámetros. <li>El body identificador no debe ser null; su tipo debe ser del formato (V I A...)V, donde V no esvoid , o de lo contrario (I A...)void. (En el void caso, asignamos el tipo void al nombre Vy escribiremos (V I A...)V con la comprensión de que un void tipo V se quita silenciosamente de la lista de parámetros, dejando (I A...)V). <li>La lista (V I A...) de parámetros del cuerpo contribuye a una lista de tipos denominados <em>internal parameter list</em>. Restringirá las listas de parámetros de las otras partes del bucle. <li>Como caso especial, si el cuerpo solo contribuye V y I tipos, sin tipos adicionales A , la lista de parámetros internos se extiende por los tipos A... de argumento del iterations identificador. <li>Si los tipos (V I) de variable de iteración se quitan de la lista de parámetros internos, la lista (A...) más corta resultante se denomina <lista de parámetros<> externos em>. <li>El tipo Vde valor devuelto body , si no es asívoid, determina el tipo de una variable de estado adicional del bucle. El cuerpo debe aceptar un parámetro inicial y devolver un valor de este tipo V. <li>Si init no es asínull, debe tener el tipo Vde valor devuelto . Su lista de parámetros (de alguna forma <c>(A*)</c>) debe ser eficazmente idéntica a la lista (A...)de parámetros externos . <li>Si init es null, la variable de bucle se inicializará en su #empty valor predeterminado. <li>La lista de parámetros de iterations (de alguna forma (A*)) debe ser eficazmente idéntica a la lista (A...)de parámetros externos . </ul>

El tipo de resultado y la firma de parámetro del controlador de bucle resultante se determinan de la siguiente manera:< ul<>li>El tipo de resultado del controlador de bucle es el tipo V de resultado del cuerpo. <li>Los tipos de parámetro del controlador de bucle son los tipos (A...), de la lista de parámetros externos. </ul>

Este es el pseudocódigo para el identificador de bucle resultante. En el código, V/v representa el tipo /valor de la segunda variable de bucle, así como el tipo de resultado del bucle; y A.../a... representan argumentos pasados al bucle. <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>

Agregado en 9.

Java documentación para java.lang.invoke.MethodHandles.countedLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a