(* 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'。 –