我正在使用ref
计数来计算函数执行的次数,但是如果我想摆脱 ref 怎么办?我是ocaml的新手,请给我一些建议,这是我得到的:
let count =ref 0;;
let rec addtive n=
if n<9 then count
else(
incr count;
addtive(sum(digit(n)))
) ;;
# a 551515;;
- : int ref = {contents = 2}
但我想变得像
-: int = 2
我正在使用ref
计数来计算函数执行的次数,但是如果我想摆脱 ref 怎么办?我是ocaml的新手,请给我一些建议,这是我得到的:
let count =ref 0;;
let rec addtive n=
if n<9 then count
else(
incr count;
addtive(sum(digit(n)))
) ;;
# a 551515;;
- : int ref = {contents = 2}
但我想变得像
-: int = 2
只需!
在then
子句中添加 a 即可从 中提取值ref
:
let count =ref 0;;
let rec addtive n=
if n<9 then !count
else(
incr count;
addtive(sum(digit(n)))
) ;;
您应该将计数作为第二个参数传递(如果需要,定义一个辅助方法):
let additive n =
let rec helper n count =
if n<9 then count
else helper (sum (digit n)) (count + 1)
in
helper n 0