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

定義

do-while初期化子、本文、述語からループを構築します。

[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

パラメーター

init
MethodHandle

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

body
MethodHandle

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

pred
MethodHandle

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

戻り値

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

属性

注釈

do-while初期化子、本文、述語からループを構築します。 これは、#loop(MethodHandle[][]) ジェネリック ループ 結合子の便利なラッパーです。

ハンドルは pred 、ループ条件と body、その本体を表します。 このメソッドによって生成されるループは、各イテレーションで最初にその本体を実行し、述語を評価します。 本体の実行後に述語が に false 評価されると、ループは終了します。

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

これらの引数ハンドルに対する次の規則は保持されます。ul>li ハンドルは body であるnull必要があります。その型は 形式(V A...)Vである必要があります。ここでV、 は非voidであるか、それ以外の場合(A...)voidは である必要があります。><< (このvoid場合、型voidを という名前Vに割り当て、型がパラメーター リストから静かに削除され、 を残(A...)VすことをvoidV理解して記述(V A...)Vします)。 <li>本文のパラメーター リスト(V A...)は、em>内部パラメーター リスト</em> と呼ばれます<。 他のループ部分のパラメーター リストが制約されます。 <li>繰り返し変数の型Vが内部パラメーター リストから削除された場合、結果の短いリスト(A...)は em>外部パラメーター リスト</em> と呼ばれます<。 <li>本文の戻り値の型 V(以外のvoid場合) は、ループの追加の状態変数の型を決定します。 本文は、この型 Vの値を受け入れて返す必要があります。 <li>が以外のnull場合initは、戻り値の型 Vが必要です。 そのパラメーター リスト (何らかの形式 <の c>(A*)</c>) は、外部パラメーター リスト (A...)と実質的に同じである必要があります。 <li>が nullの場合init、ループ変数は #empty 既定値に初期化されます。 <li>ハンドルを prednullすることはできません。 戻り値の型として が必要 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 doWhileLoop(A... a...) {
              V v = init(a...);
              do {
                v = body(v, a...);
              } while (pred(v, a...));
              return v;
            }
            }

</blockquote>

9 に追加されました。

の Java ドキュメント java.lang.invoke.MethodHandles.doWhileLoop(java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle, java.lang.invoke.MethodHandle)

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

適用対象