为什么我不能在OCaml中再次打印此输入?
我对OCaml非常陌生,正在尝试同时学习和编写一个程序。我正在写一个回文程序。我正试图从用户那里获取一个字符串,例如为什么我不能在OCaml中再次打印此输入?,ocaml,Ocaml,我对OCaml非常陌生,正在尝试同时学习和编写一个程序。我正在写一个回文程序。我正试图从用户那里获取一个字符串,例如deved或Hello World或loud以上所有内容都是有效的用户输入。我需要读取这些字符串并显示它们,然后反转它们并检查它是否是回文。我做了以下代码 print_string "Enter a string: "; let str = read_line () in Printf.printf "%s\n" str;; Printf.printf "%s\n" str;;
deved
或Hello World
或loud
以上所有内容都是有效的用户输入。我需要读取这些字符串并显示它们,然后反转它们并检查它是否是回文。我做了以下代码
print_string "Enter a string: ";
let str = read_line () in
Printf.printf "%s\n" str;;
Printf.printf "%s\n" str;;
这可以很好地工作,并且可以打印,输入字符串:d e v e d
或输入字符串:Hello World代码>当我尝试添加另一个Printf.Printf“%s\n”str;时出现问题代码>输入到代码中。它给了我一个文件“main.ml”的错误,第5行,字符21-24:
错误:未绑定值str
,第5行是第2条Printf.Printf
语句的行。我已经试过了,没有对于这两个print语句,使用1或2,每次我都会得到相同的错误。有更多OCaml知识的人知道我为什么会出现这个错误吗。因为您在
中使用了,您的代码解析为:
(let str = read_line () in Printf.printf "%s\n" str);;
然后是一个完全独立的:
Printf.printf "%s\n" str;;
因此str
是第一个printf
的本地值
你想要:
let str = read_line ();;
Printf.printf "%s\n" str;;
Printf.printf "%s\n" str;;
这是三个不同的定义。第一个定义了一个全局变量str
,因为您在
中使用了,您的代码解析为:
(let str = read_line () in Printf.printf "%s\n" str);;
然后是一个完全独立的:
Printf.printf "%s\n" str;;
因此str
是第一个printf
的本地值
你想要:
let str = read_line ();;
Printf.printf "%s\n" str;;
Printf.printf "%s\n" str;;
这是三个不同的定义。第一个定义了一个全局变量str
,也可以发布给您带来麻烦的代码。@norok2我发布了,只是没有发布额外的Printf语句。我在下面的一段代码中清楚地定义了这一点。这就是我所有的密码。只有5行。也可以发布给您带来麻烦的代码。@norok2我发布了,我只是没有发布额外的Printf语句。我在下面的一段代码中清楚地定义了这一点。这就是我所有的密码。只有5行。