有什么方法可以做到这一点C/C#
?
例如(C#风格)
for (int i = 0; i < 100; i++)
{
if (i == 66)
break;
}
最简洁的答案是不。您通常会使用一些高阶函数来表达相同的功能。有许多函数可以让您执行此操作,对应于不同的模式(因此,如果您描述了您到底需要什么,有人可能会给您更好的答案)。
例如,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
and continue
. 这是一个例子 http://tomasp.net/blog/imperative-ii-break.aspx/,但正如我所说,这效率不高。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)