MethodHandles.DoWhileLoop(MethodHandle, MethodHandle, MethodHandle) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Constrói um do-while loop de um inicializador, um corpo e um 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, fornecendo o valor inicial da variável de loop.
Pode ser null, implicando um valor inicial padrão. Consulte acima para obter outras restrições.
- body
- MethodHandle
corpo do loop, que pode não ser null. Ele controla os parâmetros de loop e o tipo de resultado.
Consulte acima para obter outras restrições.
- pred
- MethodHandle
condição para o loop, que pode não ser null. Seu tipo de resultado deve ser boolean. Consulte acima para obter outras restrições.
Retornos
um identificador de método implementando o while loop conforme descrito pelos argumentos.
- Atributos
Comentários
Constrói um do-while loop de um inicializador, um corpo e um predicado. Esse é um wrapper de conveniência para o combinador de loop genérico #loop(MethodHandle[][]).
O pred identificador descreve a condição de loop; e bodyseu corpo. O loop resultante desse método, em cada iteração, executará primeiro seu corpo e, em seguida, avaliará o predicado. O loop será encerrado quando o predicado for avaliado false após uma execução do corpo.
O init identificador descreve o valor inicial de uma variável local de loop opcional adicional. Em cada iteração, essa variável local de loop, se presente, será passada para a body e atualizada com o valor retornado de sua invocação. O resultado da execução do loop será o valor final da variável local de loop adicional (se presente).
As regras a seguir contêm esses identificadores de argumento:ul>li O identificador não deve sernull; seu tipo deve ser do formulário(V A...)V, onde V não estávoid ou então(A...)void.body><< (No void caso, atribuimos o tipo void ao nome Ve escreveremos (V A...)V com a compreensão de que um void tipo V é removido silenciosamente da lista de parâmetros, deixando (A...)V.) <li>A lista (V A...) de parâmetros do corpo é chamada de>< em lista< de parâmetros interno/em>. Ele restringirá as listas de parâmetros das outras partes de loop.
<li>Se o tipo V de variável de iteração for removido da lista de parâmetros internos, a lista (A...) mais curta resultante será chamada de <>lista</em de parâmetros externos>.
<li>O tipo Vde retorno do corpo, se nãovoid for, determina o tipo de uma variável de estado adicional do loop. O corpo deve aceitar e retornar um valor desse tipo V.
<li>Se init nãonull for, ele deve ter o tipo Vde retorno. Sua lista de parâmetros (de algum formulário <c>(A*)</c>) deve ser efetivamente idêntica à lista (A...)de parâmetros externos.
<li>Se init for null, a variável de loop será inicializada para seu valor padrão #empty.
<li>O pred identificador não deve ser null. Ele deve ter boolean como tipo de retorno. Sua lista de parâmetros (vazia ou do formulário (V A*)) deve ser efetivamente idêntica à lista de parâmetros interna.
</ul>
O tipo de resultado e a assinatura de parâmetro do identificador de loop resultante são determinados da seguinte maneira:<ul<>li>O tipo de resultado do identificador de loop é o tipo V de resultado do corpo.
<li>Os tipos de parâmetro do identificador de loop são os tipos (A...)da lista de parâmetros externos.
</ul>
Aqui está o pseudocódigo para o identificador de loop resultante. No código, V/v represente o tipo/valor da variável de loop exclusivo, bem como o tipo de resultado do loop; e A/ao do argumento passado para o loop.
<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>
Adicionado em 9.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.