下面的代码给出了一个错误:OCaml的函数语法错误
let alpha = Hashtbl.create 26 in
let print_and_add a =
print_char a;
Hashtbl.add alpha a true;;
let str = read_line() in
String.iter (fun x -> if Hashtbl.mem alpha x=false then print_and_add x) str
什么它应该做的:每个函数被调用(用char参数)的时候,它应该打印的字符,并将其添加到哈希表(alpha)。 我试着用其他的语法功能:
let alpha = Hashtbl.create 26 in
let print_and_add = (fun a ->
print_char a;
Hashtbl.add alpha a true) in
let str = read_line() in
String.iter (fun x -> if Hashtbl.mem alpha x=false then print_and_add x) str
但我还是想知道为什么第一个代码失败。 - 感谢您的帮助。
谢谢,但它为什么在第二个代码段中的范围?我没有看到两者之间的巨大差异。 –
'let ... in ...'仅将本地定义绑定到:因此“in”。尽管您的缩进是前一种情况,但您在定义print_and_add之后会结束语句。 – muhmuhten
缩进在语法上无关紧要。 –