gpt4 book ai didi

ocaml - 是否可以在函数内部定义异常

转载 作者:行者123 更新时间:2023-12-01 13:49:04 24 4
gpt4 key购买 nike

在 OCaml 中实现“提前返回”的一种方法是通过异常:

exception Exit

let myfunc () =
try
for i = 0 to .... do
if .. then raise Exit
done; false
with Exit -> true

但是,有没有办法在函数体中声明这个Exit异常,使其名称对模块中的其他函数不可见?

(* I would like to do this, but it gives a syntax error *)
let myfunc () =
exception Exit
try
for i = 0 to .... do
if .. then raise Exit
done; false
with Exit -> true

最佳答案

是的,你想要的可以通过使用本地模块实现:

let myfunc () = 
let module M = struct exception Exit end in
try
for i = 0 to 3 do
if true then raise M.Exit
done; false
with M.Exit -> true

不过,这种风格读起来不是特别愉快,所以我不推荐它。如果您想在程序的大部分其余部分中隐藏它,则省略在下一个模块界面显示 Exit 就足够了。

关于ocaml - 是否可以在函数内部定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com