Whileビルダーオブジェクトのメソッドを定義する場合は、計算式whileで-loopsを使用できます。メソッドのシグネチャは次のとおりです。While
member b.While (predicate:unit->bool, body:M<'a>) : M<'a>
比較のために、Forメソッドのシグネチャは次のとおりです。
member b.For (items:seq<'a>, body:unit->M<'a>) : M<'a>
While-methodでは、本体は単純な型であり、Forメソッドのような関数ではないことに注意してください。
let計算式の中に関数呼び出しなどの他のステートメントを埋め込むことはできますが、それらはループ内whileで複数回実行することは不可能です。
builder {
while foo() do
printfn "step"
yield bar()
}
while-loopが複数回実行されず、単に繰り返されるのはなぜですか?なぜforループとの大きな違いがあるのですか?さらに良いことに、計算式でwhileループを使用するための意図された戦略はありますか?