在Ocaml中构建循环
我是Ocaml新手,在一个简单的循环中遇到了一个问题,下面是我的代码:在Ocaml中构建循环,ocaml,Ocaml,我是Ocaml新手,在一个简单的循环中遇到了一个问题,下面是我的代码: open Str;; let main () = let quit_loop = ref false in while not !quit_loop do let str = read_line () in if Str.string_match (Str.regexp "create") str 0 then let train_list = Str.split (Str.rege
open Str;;
let main () =
let quit_loop = ref false in
while not !quit_loop do
let str = read_line () in
if Str.string_match (Str.regexp "create") str 0
then let train_list = Str.split (Str.regexp "[ \t]+") str in
print_string "List created\n";
if Str.string_match (Str.regexp "delete") str 0
then let train_list = Str.split (Str.regexp "[ \t]+") str in
print_string "train deleted\n";
if Str.string_match (Str.regexp "quit") str 0
then quit_loop := true
done;;
let _ = main ()
代码可以编译,但似乎只有“创建”起作用。如果你有什么建议可以帮我
谢谢 如果正确缩进,您将获得:
open Str;;
let main () =
let quit_loop = ref false in
while not !quit_loop do
let str = read_line () in
if Str.string_match (Str.regexp "create") str 0
then let train_list = Str.split (Str.regexp "[ \t]+") str in
print_string "List created\n";
if Str.string_match (Str.regexp "delete") str 0
then let train_list = Str.split (Str.regexp "[ \t]+") str in
print_string "train deleted\n";
if Str.string_match (Str.regexp "quit") str 0
then quit_loop := true
done;;
let _ = main ()
如您所见,另一个if
嵌套在第一个if
块中。这是由于let e=。。。在instr1中代码>创建一个包含所有后续内容的块
你应该写(你可以用(…)
替换开始…结束
):
我的直觉是,所有后续的if
s都嵌套在第一个if
中。如果在if
语句周围加上括号,会有什么变化吗?谢谢你的帮助!
open Str;;
let main () =
let quit_loop = ref false in
while not !quit_loop do
let str = read_line () in
if Str.string_match (Str.regexp "create") str 0
then begin
let train_list = Str.split (Str.regexp "[ \t]+") str in
print_string "List created\n"
end;
if Str.string_match (Str.regexp "delete") str 0
then begin
let train_list = Str.split (Str.regexp "[ \t]+") str in
print_string "train deleted\n"
end;
if Str.string_match (Str.regexp "quit") str 0
then quit_loop := true
done;;
let _ = main ()