向SML中的函数传递引用
我想在向SML中的函数传递引用,sml,Sml,我想在sml中传递对函数foo的引用,并更改其值。考虑下面的场景: 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); 它将不起作用,因为它将包含test1的输出(其布尔值)。我想传递一个引用x,并每次更改它 val x = ref
sml
中传递对函数foo
的引用,并更改其值。考虑下面的场景:
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);
它将不起作用,因为它将包含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
,除了返回值,以便检查是否相等之外。有什么问题吗
fun foo v r = (r := v; v)
?抛开其他问题不谈,通过单个单元测试来处理可变状态总是一个坏主意(TM)。让您的单元测试独立地设置数据,您未来的自我将感谢您。尝试现有的单元测试模块,使事情稍微容易一些,例如。