相关疑难解决方法(0)

在F#中计算表达式中`while`循环的作用是什么?

如果定义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循环的策略?

syntax f# computation-expression

7
推荐指数
1
解决办法
612
查看次数

标签 统计

computation-expression ×1

f# ×1

syntax ×1