如果定义While构建器对象的方法,则可以while在计算表达式中使用-loops .该While方法的签名是:
member b.While (predicate:unit->bool, body:M<'a>) : M<'a>
Run Code Online (Sandbox Code Playgroud)
为了比较,该For方法的签名是:
member b.For (items:seq<'a>, body:unit->M<'a>) : M<'a>
Run Code Online (Sandbox Code Playgroud)
您应该注意到,在While-method中,body是一个简单类型,而不是方法中的函数For.
你可以let在计算表达式中嵌入一些其他语句,比如函数调用,但是那些不可能在while-loop中不可能执行多次.
builder {
while foo() do
printfn "step"
yield bar()
}
Run Code Online (Sandbox Code Playgroud)
为什么while-loop不会被执行多次,而只是重复?为什么与for循环有显着差异?更好的是,是否有一些在计算表达式中使用while循环的策略?