Если вы определяете метод строителя-объекта While
, вы можете использовать while
-loops в своем computation expressions. Сигнатура метода While
является:Какова роль `while`-циклов в выражениях вычислений в F #?
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-loops? Еще лучше, есть ли какая-то предполагаемая стратегия использования while-loops в выражениях вычислений?
Nice. Я не знал о «Run». –