我经常需要在 OCaml 中打破循环,至少有两种方法:
(* by exception *)
try
for i = 0 to 100 do
...
if cond then raise BreakLoop
done;
...
with BreakLoop -> ...
(* by while *)
let cond = ref false in
let i = ref 0 in
while (not !cond) && (i<= 100) do
...
i := !i + 1
done;
if !cond then ...
我最关心的是运行时间的优化,只要程序能够轻松阅读和理解即可。道路while
当存在多个嵌套循环时,会使循环变得复杂。
我在互联网上的某个地方看到人们说在 OCaml 中抛出和捕获异常的成本很高。有人可以证实我的说法是否属实吗?
所以我们有时应该使用这样的方式while
方式,有时会使用exception
way?
与其他语言相比,ocaml 中的异常处理速度非常快(只要您使用原始编译器。js_of_ocaml、ocaml-java 等情况有所不同)
然而,具有复杂 while 循环的解决方案仍然会快一点。如果代码在例外情况下更容易阅读(至少在大多数情况下),我不会关心最小的速度差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)