MethodHandles.DoWhileLoop(MethodHandle, MethodHandle, MethodHandle) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Construye un do-while bucle a partir de un inicializador, un cuerpo y un predicado.
[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
Parámetros
- 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.
Consulte lo anterior para ver otras restricciones.
- pred
- MethodHandle
condición del bucle, que puede no ser null. Su tipo de resultado debe ser boolean. Consulte lo anterior para ver otras restricciones.
Devoluciones
un método controla la implementación del while bucle tal como se describe en los argumentos.
- Atributos
Comentarios
Construye un do-while bucle a partir de un inicializador, un cuerpo y un predicado. Se trata de un contenedor de conveniencia para el combinador de bucle genérico #loop(MethodHandle[][]).
El pred identificador describe la condición de bucle; y body, su cuerpo. El bucle resultante de este método, en cada iteración, primero ejecutará su cuerpo y, a continuación, evaluará el predicado. El bucle finalizará una vez que el predicado se evalúe false como después de una ejecución del cuerpo.
El init identificador describe el valor inicial de una variable local de bucle opcional adicional. En cada iteración, esta variable local de bucle, si está presente, se pasará a body y se actualizará con el valor devuelto de su invocación. El resultado de la ejecución del bucle será el valor final de la variable local de bucle adicional (si está presente).
Las reglas siguientes contienen estos identificadores de argumento:<ul><li>El body identificador no debe ser null; su tipo debe ser del formato (V A...)V, donde V no esvoid , o de lo contrario (A...)void. (En el void caso, asignamos el tipo void al nombre Vy escribiremos (V A...)V con la comprensión de que un void tipo V se quita silenciosamente de la lista de parámetros, dejando (A...)V). <li>La lista (V A...) de parámetros del cuerpo se denomina <em>internal parameter list</em>. Restringirá las listas de parámetros de las otras partes del bucle.
<li>Si el tipo V de variable de iteración se quita de la lista de parámetros internos, la lista (A...) más corta resultante se denomina <em>external parameter list</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 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>El pred identificador no debe ser null. Debe tener boolean como tipo de valor devuelto. Su lista de parámetros (ya sea vacía o del formulario (V A*)) debe ser eficazmente idéntica a la lista de parámetros internos.
</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 variable de bucle único, así como el tipo de resultado del bucle; y A/a, el del argumento pasado al bucle.
<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>
Agregado en 9.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.