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 ,迴圈就會終止。
handle 描述 init 額外可選迴圈-局部變數的初始值。 每次迭代中,若有此迴圈區域變數,會傳給並 body 更新為調用時回傳的值。 迴圈執行的結果將是額外迴圈-局部變數的最終值(若存在)。
以下規則適用於這些參數的句柄:ul>li 這個柄必須不是null;其型態必須是形式(V A...)V為 ,其中 V 是非void ,否則 (A...)void。body><< (在這種情況下 void ,我們將型別 void 指派給名稱 V,並 (V A...)V 假設某個 void 型別 V 會悄悄從參數列表中移除,留下 (A...)V。) <li>主體的參數列表 (V A...) 稱為 <em>內部參數列表</em>。 它會限制其他迴圈部分的參數清單。
<li>如果從內部參數列表中刪除迭代變數類型 V ,所得的較短列表 (A...) 稱為 <em>外部參數列表</em>。
<li>若非void ,則 body return 類型 V,決定迴圈中額外狀態變數的類型。 身體必須同時接受並回傳此類型的 V值。
<li>如果 init 非null ,則必須具有返回類型 V。 其參數列表(形式 <為 c>(A*)</c>))必須與外部參數列表 (A...)實質上相同。
<li>如果 init 是 null,迴圈變數將初始化為其 #empty 預設值。
<李>pred,把手不能。null 它必須有 作為 boolean 其返回類型。 其參數列表(可為空或形式 (V A*)為 )必須與內部參數列表實質上相同。
</ul>
產生的迴圈句柄的結果型態與參數簽名如下:<ul<>li>迴圈柄的結果型別即為主體的結果型別V。
<li>迴圈手柄的參數類型是外部參數列表中的類型 (A...)。
</ul>
以下是產生迴圈句柄的偽程式碼。 在程式碼中,表示 V/v 唯一迴圈變數的型別 / 值以及迴圈的結果型別;以及 A/a,傳遞給迴圈的參數。
<引用>
{@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;
}
}
</區塊引用>
新增9。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。