如果您定义了构建器对象的方法,则可以在计算表达式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
- 方法中,主体是简单类型,而不是For
方法中的函数。
您可以在计算表达式中嵌入一些其他语句,例如let
和函数调用,但这些语句不可能在while
-loop 中多次执行。
builder {
while foo() do
printfn "step"
yield bar()
}
为什么while
-loop 不执行多次,而只是重复执行?为什么与 for 循环有显着差异?更好的是,是否有一些在计算表达式中使用 while 循环的预期策略?