Language

MethodHandles.WhileLoop(MethodHandle, MethodHandle, MethodHandle) メソッド

定義

初期化子、本体、および述語から while ループを構築します。

[Android.Runtime.Register("whileLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)]
public static Java.Lang.Invoke.MethodHandle? WhileLoop(Java.Lang.Invoke.MethodHandle? init, Java.Lang.Invoke.MethodHandle? pred, Java.Lang.Invoke.MethodHandle? body);
[<Android.Runtime.Register("whileLoop", "(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;", "", ApiSince=33)>]
static member WhileLoop : Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle * Java.Lang.Invoke.MethodHandle -> Java.Lang.Invoke.MethodHandle

パラメーター

init
MethodHandle

省略可能な初期化子。ループ変数の初期値を指定します。 既定値を意味する nullがあります。 その他の制約については、上記を参照してください。

pred
MethodHandle

ループの条件です。これは nullできない可能性があります。 結果の型は booleanする必要があります。 その他の制約については、上記を参照してください。

body
MethodHandle

ループの本文。これは nullできない可能性があります。 ループ パラメーターと結果の型を制御します。 その他の制約については、上記を参照してください。

返品

引数で説明されているように、 while ループを実装するメソッド ハンドル。

属性

注釈

初期化子、本体、および述語から while ループを構築します。 これは、#loop(MethodHandle[][]) ジェネリック ループ コンバイネータの便利なラッパーです。

pred ハンドルは、ループ条件とその本体bodyを記述します。 このメソッドの結果として得られるループは、各反復で最初に述語を評価し、その本体を実行します (述語が true に評価される場合)。 述語が false に評価されると、ループは終了します (この場合、本文は実行されません)。

init ハンドルは、追加の省略可能なループ ローカル変数の初期値を記述します。 各イテレーションで、このループ ローカル変数が存在する場合は、 body に渡され、その呼び出しから返された値で更新されます。 ループ実行の結果は、追加のループ ローカル変数の最終的な値になります (存在する場合)。

これらの引数ハンドル<ul><li>body ハンドルはnullできません。その型は、Vがvoidでないフォーム (V A...)Vである必要があります。それ以外の場合は(A...)void。 (voidの場合は、Vという名前に型voidを割り当て、void型Vがパラメーター リストから静かに削除され、(A...)Vを残すことを理解した(V A...)Vを記述します)。) <li>本文のパラメーター リスト(V A...)は、<em>internal パラメーター リスト</em>と呼ばれます。 他のループ 部分のパラメーター リストが制約されます。 <li>内部パラメーター リストから反復変数型 V が削除された場合、結果の短いリスト (A...) は <em>external パラメーター リスト</em> と呼ばれます。 <li>本文の戻り値の型 V、voidでない場合は、ループの追加の状態変数の型を決定します。 本文は、この型 Vの値を受け入れて返す必要があります。 <li>initがnullでない場合は、戻り値の型がVされている必要があります。 そのパラメーター リスト (何らかの形式 <c>(A*)</c>) は、外部パラメーター リストの (A...)と実質的に同じである必要があります。 <li>initがnull場合、ループ変数は #empty 既定値に初期化されます。 <li>pred ハンドルをnullすることはできません。 戻り値の型として boolean が必要です。 そのパラメーター リスト (空またはフォーム (V A*)のいずれか) は、内部パラメーター リストと実質的に同じである必要があります。 </ul>

結果のループ ハンドルの結果の型とパラメーターシグネチャは、次のように決定されます:<ul><li>ループ ハンドルの結果の型は、本文の結果の型 V です。 <li>ループ ハンドルのパラメーター型は、外部パラメーター リストから (A...)型です。 </ul>

結果のループ ハンドルの擬似コードを次に示します。 コードでは、 V/v 唯一のループ変数の型/値とループの結果の型を表し、ループに渡される引数の型と A/aを表します。 <blockquote>

{@code
            V init(A...);
            boolean pred(V, A...);
            V body(V, A...);
            V whileLoop(A... a...) {
              V v = init(a...);
              while (pred(v, a...)) {
                v = body(v, a...);
              }
              return v;
            }
            }

</blockquote>

9 に追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象