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 A...)V
である必要があります。ここでV
、 は非void
であるか、それ以外の場合(A...)void
は である必要があります。><< (このvoid
場合、型void
を という名前V
に割り当て、型がパラメーター リストから静かに削除され、 を残(A...)V
すことをvoid
V
理解して記述(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>ハンドルを 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 に追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。