【发布时间】:2011-01-02 03:59:28
【问题描述】:
如果您定义了构建器对象的While 方法,则可以在computation expressions 中使用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 循环中多次执行。
builder {
while foo() do
printfn "step"
yield bar()
}
为什么while-loop 没有多次执行,而只是重复执行?为什么与 for 循环有显着差异?更好的是,是否有一些在计算表达式中使用 while 循环的预期策略?
【问题讨论】:
标签: syntax f# computation-expression