gpt4 book ai didi

exception - 打开输入 channel 的 Ocaml 异常处理

转载 作者:行者123 更新时间:2023-12-03 06:51:23 24 4
gpt4 key购买 nike

作为 Ocaml 的初学者,我有以下当前工作代码:

...
let ch_in = open_in input_file in
try
proc_lines ch_in
with End_of_file -> close_in ch_in;;

现在我想为不存在的输入文件添加错误处理,我这样写:

let ch_in = try Some (open_in input_file) with _ -> None in
match ch_in with
| Some x -> try proc_lines x with End_of_file -> close_in x
| None -> () ;;

并收到错误消息:此模式与“a 选项”类型的值匹配but 在这里用于匹配最后一行的 exn 类型的值。如果我用 None 替换 _,我会收到有关不完整匹配的错误。

我读到 exn 是异常类型。我确信我不明白这里到底发生了什么,所以请为我指出正确的方向。谢谢!

最佳答案

当在其他模式匹配中嵌入模式匹配时,您需要使用 ( ... )begin ... end (括号的语法糖)来封装嵌入的匹配):

let ch_in = try Some (open_in input_file) with _ -> None in
match ch_in with
| Some x -> (try proc_lines x with End_of_file -> close_in x)
| None -> () ;;

关于exception - 打开输入 channel 的 Ocaml 异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396456/

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