0
下面的代碼有什麼問題?我知道何時使用'',我掙扎了很多';'要麼 ';;'或者在OCaml中使用begin end。在這裏,我需要閱讀一些邊緣並插入到圖形中,但我需要將其與程序的其餘部分鏈接起來,以便它可以將g(圖形)與所有邊緣一起使用。 當我做到這一點,它說錯誤:語法錯誤在OCaml中循環時出現語法錯誤
let i = ref n in
while !i > 0 do
(
let pair = read_edge Scanning.stdin in
let g = insert_edge (fst pair) (snd pair) g in
i := !i - 1
)
done in (* giving error in this line *)
let rec do_stuff l =
match l with
| [] ->()
| h::t -> print_int h;do_stuff t in
(* more functions)
實際上,';'只是'let()= '的語法糖,如果我沒有弄錯的話。 –
RichouHunter
我對'let g = ....'的想法是不斷更新g,這樣當while循環結束時它可以被程序的其餘部分使用。我想把它與'完成'連接起來,如果我不能這樣做,我該如何解決這個問題?我認爲我之前看到'完成了',但現在我認爲它是在for循環中,而不是在一個while循環中。 –
@power_output如果循環被用作'let'表達式中的值,也就是'let something = while cond do ... done in ...',那麼你會看到'done in'的唯一方法。無論如何,'let'會創建一個新變量 - 它不會影響現有變量的值(您不能這麼做)。如果你想能夠重新分配一些東西,你需要一個'ref'(或任何帶有可變成員的東西)。 – sepp2k