MethodHandles.DoWhileLoop(MethodHandle, MethodHandle, MethodHandle) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
初期化子、本体、および述語から 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が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 doWhileLoop(A... a...) {
V v = init(a...);
do {
v = body(v, a...);
} while (pred(v, a...));
return v;
}
}
</blockquote>
9 に追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。