如图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选项 但在这里用来匹配EXN类型的值为最后一行。如果我替代的的对的 _ 的,我得到一个错误,不完整匹配。

我读 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 -> () ;;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top