我是OCaml的新手,正在嘗試學習如何更新字典並處理if/else條件。
我寫了下面的代碼來檢查字典是否有一些關鍵字。如果不是,則爲該密鑰添加一個默認值。最後打印出來。OCaml字典更新
module MyUsers = Map.Make(String)
let myGraph = MyUsers.empty;;
let myGraph = MyUsers.add "test" "preset" myGraph in
try
let mapped = MyUsers.find "test" myGraph
with
Not_found -> let myGraph = MyUsers.add "test" "default" myGraph in
Printf.printf "value for the key is now %s\n" (MyUsers.find "test" myGraph)
該錯誤消息我現在已經是syntax error for line 6: with
這裏有什麼問題?另外,何時使用in
;
或;;
?
我已經做了一些谷歌搜索,並明白in
似乎定義一些範圍之前的下一個;;
。但對我來說還是很模糊的。你能否更清楚地解釋一下?
感謝您的回覆。將'讓myDict = MyUsers.add「測試」「test2」myDict in'更新字典myDict? – Ra1nWarden
不,沒有東西會更新字典,正如我所說:-)字典是不可改變的。這個表達式創建了一個新的字典,它恰好與舊字典具有相同的名稱。 –
我看到了,但是原來的一個被覆蓋,因爲它們具有相同的名稱? – Ra1nWarden