我想在foo
中传递对函数sml
的引用并更改其值。考虑以下情形:
val x = ref 5;
foo 3 x;
(* now x will be 3 *)
在sml
中有可能吗?我知道sml
没有变量,所以我不确定它是否可能。我想通过这种方式创建测试,例如:
val test1 = (foo (seq 2) = 2);
val test2 = (foo it = 2);
它将不起作用,因为it
将包含test1
的输出(其布尔值)。我想传递一个引用x
并每次更改它。
val x = ref 0;
val test1 = (foo (seq 2) x = 2);
val test2 = (foo (getnext(!x)) x = 3);
val test3 = (foo (getnext(!x)) x = 4);
val test4 = (foo (getnext(!x)) x = 5);
getnext
将获得下一个值,而foo
会将其插入x
中,除了返回值以使其可以检查是否相等外。
答案 0 :(得分:1)
怎么了
fun foo v r = (r := v; v)
?