bru*_*ard 3 ocaml try-catch imperative-programming while-loop
几乎是我第一次尝试在ocaml中编写命令式代码以尝试回答本网站上的问题,但我面临一个小问题.
let f() =
try
while true do
()
done
with
_ -> 2
Run Code Online (Sandbox Code Playgroud)
他不喜欢这样,因为他认为这个函数返回单元,就像它在try块中一样,但try块返回一个int.因此,如果我在"完成"之后添加3,它会起作用,但它真的很难看,因为3真的永远不会返回.
你怎么做到这一点 ?
使用assert false,它总是引发异常,因此可以在任何预期类型的地方使用:
let f() =
try
while true do
()
done;
assert false
with
_ -> 2