Language

MethodHandles.CountedLoop メソッド

定義

オーバーロード

名前 説明
CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)

数値の範囲をカウントするループを構築します。

CountedLoop(MethodHandle, MethodHandle, MethodHandle)

特定の回数の反復を実行するループを構築します。

CountedLoop(MethodHandle, MethodHandle, MethodHandle, MethodHandle)

数値の範囲をカウントするループを構築します。

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

パラメーター

start
MethodHandle

ループ カウンターの開始値を返すnull 以外のハンドル。 intする必要があります。 その他の制約については、上記を参照してください。

end
MethodHandle

ループ カウンターの終了値を返すnull 以外のハンドル (ループは end-1に実行されます)。 結果の型は intする必要があります。 その他の制約については、上記を参照してください。

init
MethodHandle

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

body
MethodHandle

ループの本文。これは nullできない可能性があります。 これは、標準ケースのループ パラメーターと結果の型を制御します (詳細については、上記を参照してください)。 独自の戻り値の型 (void 以外の場合) と int パラメーター (カウンターの場合) を受け入れる必要があり、任意の数の追加型を受け入れる場合があります。 その他の制約については、上記を参照してください。

返品

ループを表すメソッド ハンドル。

属性

注釈

数値の範囲をカウントするループを構築します。 これは、#loop(MethodHandle[][]) ジェネリック ループ コンバイネータの便利なラッパーです。

ループ カウンター i は、 int型のループ 反復変数です。 startおよびendハンドルによって、ループ カウンターの開始 (包括) 値と終了 (排他) 値が決まります。 ループ カウンターは、start ハンドルの評価から返されたint値に初期化され、ステップ幅が 1 のend (排他的) から返される値まで実行されます。

body ハンドルがVvoid以外の型を返す場合は、その型の先頭ループ反復変数も存在します。 この変数は、省略可能なinit ハンドルを使用して初期化されます。または、そのハンドルがnullされている場合は、V型の #empty 既定値に初期化されます。

各イテレーションでは、イテレーション変数が body ハンドルの呼び出しに渡されます。 (V 型の) 本体から返されるvoid以外の値は、先頭の反復変数を更新します。 ループ ハンドルの実行の結果は、その変数の最終的なV値になります (または、V変数がない場合はvoid)。

引数ハンドル<ul><li>startハンドルとend ハンドルはnullしないでください。また、パラメーター型リストのIと呼ばれる共通型intを返す必要があります。 <li>body ハンドルはnullできません。その型は、Vがvoidでない形式の(V I A...)Vである必要があります。それ以外の場合は(I A...)void。 (voidの場合は、Vという名前に型voidを割り当て、void型Vがパラメーター リストから静かに削除され、(I A...)Vを残すことを理解した(V I A...)Vを記述します)。) <li>本文のパラメーター リスト(V I A...)は、<em>internal パラメーター リスト</em> と呼ばれる型のリストに影響します。 他のループ 部分のパラメーター リストが制約されます。 <li>本体が追加のA型を持たないV型とI型のみを提供する場合、内部パラメーター リストは、end ハンドルの引数型A...によって拡張されます。 <li>内部パラメーター リストから (V I) 反復変数型が削除された場合、結果の短いリスト (A...) は <em>external パラメーター リスト</em> と呼ばれます。 <li>本文の戻り値の型 V、voidでない場合は、ループの追加の状態変数の型を決定します。 本文は、先頭のパラメーターを受け取り、この型の値を返す必要 V。 <li>initがnullでない場合は、戻り値の型がVされている必要があります。 そのパラメーター リスト (何らかの形式 <c>(A*)</c>) は、外部パラメーター リストの (A...)と実質的に同じである必要があります。 <li>initがnull場合、ループ変数は #empty 既定値に初期化されます。 <li>(何らかの形式の(A*)の) startのパラメーター リストは、実質的に外部パラメーター リスト(A...)と同じである必要があります。 <li>同様に、 end のパラメーター リストは、実質的に外部パラメーター リストと同じである必要があります。 </ul>

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

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

{@code
            int start(A...);
            int end(A...);
            V init(A...);
            V body(V, int, A...);
            V countedLoop(A... a...) {
              int e = end(a...);
              int s = start(a...);
              V v = init(a...);
              for (int i = s; i < e; ++i) {
                v = body(v, i, a...);
              }
              return v;
            }
            }

</blockquote>

9 に追加されました。

Javaドキュメント。

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

適用対象

CountedLoop(MethodHandle, MethodHandle, MethodHandle)

特定の回数の反復を実行するループを構築します。

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

パラメーター

iterations
MethodHandle

このループが実行する必要がある反復回数を返すnull 以外のハンドル。 ハンドルの結果の型は intする必要があります。 その他の制約については、上記を参照してください。

init
MethodHandle

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

body
MethodHandle

ループの本文。これは nullできない可能性があります。 これは、標準ケースのループ パラメーターと結果の型を制御します (詳細については、上記を参照してください)。 独自の戻り値の型 (void 以外の場合) と int パラメーター (カウンターの場合) を受け入れる必要があり、任意の数の追加型を受け入れる場合があります。 その他の制約については、上記を参照してください。

返品

ループを表すメソッド ハンドル。

属性

注釈

特定の回数の反復を実行するループを構築します。 これは、#loop(MethodHandle[][]) ジェネリック ループ コンバイネータの便利なラッパーです。

イテレーションの数は、 iterations ハンドルの評価結果によって決まります。 ループ カウンター i は、 int型の追加のループ 反復変数です。 これは 0 に初期化され、各イテレーションで 1 ずつインクリメントされます。

body ハンドルがVvoid以外の型を返す場合は、その型の先頭ループ反復変数も存在します。 この変数は、省略可能なinit ハンドルを使用して初期化されます。または、そのハンドルがnullされている場合は、V型の #empty 既定値に初期化されます。

各イテレーションでは、イテレーション変数が body ハンドルの呼び出しに渡されます。 (V 型の) 本体から返されるvoid以外の値は、先頭の反復変数を更新します。 ループ ハンドルの実行の結果は、その変数の最終的なV値になります (または、V変数がない場合はvoid)。

引数ハンドルに対する次の規則は保持されます:<ul><li>iterations ハンドルはnullしないでください。また、パラメーター型リストのIと呼ばれる型intを返す必要があります。 <li>body ハンドルはnullできません。その型は、Vがvoidでない形式の(V I A...)Vである必要があります。それ以外の場合は(I A...)void。 (voidの場合は、Vという名前に型voidを割り当て、void型Vがパラメーター リストから静かに削除され、(I A...)Vを残すことを理解した(V I A...)Vを記述します)。) <li>本文のパラメーター リスト(V I A...)は、<em>internal パラメーター リスト</em> と呼ばれる型のリストに影響します。 他のループ 部分のパラメーター リストが制約されます。 <li>本体が追加のA型を持たないV型とI型のみを提供する場合、内部パラメーター リストは、iterations ハンドルの引数型A...によって拡張されます。 <li>内部パラメーター リストから (V I) 反復変数型が削除された場合、結果の短いリスト (A...) は <em>external パラメーター リスト</em> と呼ばれます。 <li>本文の戻り値の型 V、voidでない場合は、ループの追加の状態変数の型を決定します。 本文は、先頭のパラメーターを受け取り、この型の値を返す必要 V。 <li>initがnullでない場合は、戻り値の型がVされている必要があります。 そのパラメーター リスト (何らかの形式 <c>(A*)</c>) は、外部パラメーター リストの (A...)と実質的に同じである必要があります。 <li>initがnull場合、ループ変数は #empty 既定値に初期化されます。 <li>(何らかの形式の(A*)の) iterationsのパラメーター リストは、実質的に外部パラメーター リスト(A...)と同じである必要があります。 </ul>

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

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

{@code
            int iterations(A...);
            V init(A...);
            V body(V, int, A...);
            V countedLoop(A... a...) {
              int end = iterations(a...);
              V v = init(a...);
              for (int i = 0; i < end; ++i) {
                v = body(v, i, a...);
              }
              return v;
            }
            }

</blockquote>

9 に追加されました。

Javaドキュメント。

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

適用対象