我认为我有一个非常简单的问题,但无法弄清楚出了什么问题。 我想打开一个文件并在文件不存在或其他情况下尝试失败并显示一条自定义消息。
这是我的代码(抱歉有法语评论):
if (argc = 1) then
aide ()
else
(* Si plus d'un argument, on récupère le type *)
if argc >= 2 then
let stage = int_of_string (Sys.argv.(1)) in
if stage != 0 && stage != 1 then
aide ()
else
()
else
()
;
(* Si plus de deux arguments, on récupère aussi l'entrée *)
if argc >= 3 then
let filename = Sys.argv.(2) in
let input =
try
open_in filename
with _ -> failwith ("Impossible d'ouvrir le fichier " ^ filename)
else
()
;
;;
我在 with 关键字上有一个语法错误。 有人有想法吗?谢谢。
最佳答案
发生错误是因为您将 input
绑定(bind)到一个值,但没有在 then
分支中返回任何内容。
您应该在 try/with
block 之后对值 input
做一些事情并返回 ()
。
if argc >= 3 then
let filename = Sys.argv.(2) in
let input = (* The error is in this line *)
try
open_in filename
with _ -> failwith ("Impossible d'ouvrir le fichier " ^ filename)
else
()
关于let ... in 的 OCaml 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447809/