如果你定义了建造者对象的While
方法,那么你可以在你的计算表达式中使用while
循环。 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
方法中,循环体是一个简单类型,而不像 For
方法中那样是一个函数。
您可以在计算表达式中嵌入其他语句,例如 let
和函数调用,但这些语句在 while
循环中不可能执行多次。
builder {
while foo() do
printfn "step"
yield bar()
}
为什么while
循环不会执行多次,而只是重复执行?与for循环相比有何显著差异?更好的做法是,在计算表达式中使用while循环的一些策略吗?
Run
。 - Markus Jarderot