(* junk.ml *)
let flag = ref false
let get_flag = !flag
let play_cards card =
Printf.printf "%s-clause\n" (if card >= 27 && card <= 39 then "true" else "false");
(flag := if card >= 27 && card <= 39 then true else !flag);
Printf.printf "check: %B " get_flag;
在UTOP,我進口junk.ml
並獲得此輸出ocaml的裁判不保留其值
val flag : bool ref = {contents = false} val get_flag : bool = false val play_cards : int -> unit = <fun>
我叫play_cards 30;;
並收到該輸出:
true-clause
check: true - : unit =()
然而,當我打電話get_flag
我收到false
。我想知道在編寫這段代碼時是否有使用refs的概念,我誤解了它。
非常抱歉。我不小心複製了舊代碼。我現在編輯它以'flags' – stumped
@stumped替換'hearts_broken',在那個版本中,我會看到輸出'check:false'。 –