14
A
回答
23
简短的答案是否定的。您通常会使用一些高阶函数来表达相同的功能。有许多功能可以让你做到这一点,对应不同的模式(所以如果你描述了你需要什么,有人可能会给你一个更好的答案)。
例如,tryFind
函数返回从一个给定的谓词返回true
序列,它可以让你写这样的事情的第一个值:
seq { 0 .. 100 } |> Seq.tryFind (fun i ->
printfn "%d" i
i=66)
在实践中,这是去,如果最好的方式你正在表达一些高级逻辑,并有一个相应的功能。如果你真的需要表达的东西像break
,你可以使用一个递归函数:
let rec loop n =
if n < 66 then
printfn "%d" n
loop (n + 1)
loop 0
更奇特的选项(也就是效率不高,但可能是DSL的很好)是可以定义计算表达式可让您编写break
和continue
。 Here is an example,但正如我所说,这不是有效的。
4
您必须将其更改为while循环。
let (i, ans) = (ref 0, ref -1)
while(!i < 100 and !ans < 0) do
if !i = 66 then
ans := !i
ans
(这打破了,当我到达66 - 但是,是的语法是完全不同的,另一个变量的引入,等等)
2
这实在是太丑了,但对我来说它的工作。
let mutable Break = false
while not Break do
//doStuff
if breakCondition then
Break <- true
done
这对于do-while循环非常有用,因为它确保循环至少执行一次。
我希望有一个更优雅的解决方案。我不喜欢递归的,因为我害怕堆栈溢出。 :-(
0
seq {
for i = 0 to 99 do
if i = 66 then yield()
}
|> Seq.tryItem 0
|> ignore
0
对于此类问题,你可以使用一个递归函数
let rec IfEqualsNumber start finish num =
if start = finish then false
elif
start = num then true
else
let start2 = start + 1
IfEqualsNumber start2 finish num
0
试试这个:
exception BreakException
try
for i = 0 to 99 do
if i = 66 then
raise BreakException
with BreakException ->()
我知道有些人不喜欢用但它有优点
你不必考虑复杂的递归函数。 因为你可以做到这一点,但有时它不必要地麻烦 和使用异常更简单。
此方法允许您在循环体的中途断开。 (中断“标志”方法也很简单,但它只允许在循环体的末尾中断)。
您可以轻松地从嵌套循环中转义。
相关问题
- 1. Break while while循环
- 2. Break while while循环并转到if/else
- 3. python while循环break语句
- 4. Shell break while-true循环
- 5. End while while循环
- 6. while while循环
- 7. while while while循环while循环
- 8. while while while while while循环
- 9. F#使用while循环
- 10. fflush while while循环
- 11. C++ Space while while循环
- 12. while while循环
- 13. Scheme while while循环
- 14. while循环阶乘不使用break
- 15. 如果字符串不等于const char break while while循环
- 16. JavaScript while while循环
- 17. setTimeout while while循环
- 18. while while循环? (JAVA)
- 19. JAVA while while循环
- 20. while while循环Java
- 21. Powershell问题while while循环
- 22. 做while while循环永远
- 23. Javascript while while do while while循环
- 24. while while循环的问题
- 25. C#foreach while while循环
- 26. 双while循环
- 27. Java while while循环不循环
- 28. PHP for循环while while循环
- 29. SQL:在while循环中while循环
- 30. Python的while循环while循环
而且由于它不增加'我',它需要很长时间。 :-) – 2017-02-20 14:28:48