Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向SML中的函数传递引用_Sml - Fatal编程技术网

向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)。让您的单元测试独立地设置数据,您未来的自我将感谢您。尝试现有的单元测试模块,使事情稍微容易一些,例如。