SML:定义一个数组
SML: define an array
原谅我,如果它是微不足道的但是
我正在阅读 SML 中数组的文档,但我很困惑。我看到很多功能,但我如何制作自己的数组;我如何初始化一个? (一切,我都试过了)
例如,一个列表是这样初始化的:
val l = [1,2,3];
如果我想让 [1,2,3] 成为一个 1x3 数组?
我找到了如何初始化一个数组但只有一个值,例如:
array(4,0) (*creates [0,0,0,0] *)
但是 [1,2,3];
你有(至少)两种可能性,要么使用
Array.fromList
:
val a = Array.fromList [1, 2, 3];
要么使用 Array.tabulate
:
fun incr x = x + 1;
val a = Array.tabulate (3, incr);
Array.tabulate
接受两个参数:数组的大小和
用于初始化数组项的函数。
val a = Array.tabulate (3, incr);
因此等同于:
val a = Array.fromList [incr(0), incr(1), incr(2)];
请注意,我已经定义了一个函数 incr
但我也可以这样做:
val a = Array.tabulate (3, fn x => x + 1);
原谅我,如果它是微不足道的但是
我正在阅读 SML 中数组的文档,但我很困惑。我看到很多功能,但我如何制作自己的数组;我如何初始化一个? (一切,我都试过了)
例如,一个列表是这样初始化的:
val l = [1,2,3];
如果我想让 [1,2,3] 成为一个 1x3 数组?
我找到了如何初始化一个数组但只有一个值,例如:
array(4,0) (*creates [0,0,0,0] *)
但是 [1,2,3];
你有(至少)两种可能性,要么使用
Array.fromList
:
val a = Array.fromList [1, 2, 3];
要么使用 Array.tabulate
:
fun incr x = x + 1;
val a = Array.tabulate (3, incr);
Array.tabulate
接受两个参数:数组的大小和
用于初始化数组项的函数。
val a = Array.tabulate (3, incr);
因此等同于:
val a = Array.fromList [incr(0), incr(1), incr(2)];
请注意,我已经定义了一个函数 incr
但我也可以这样做:
val a = Array.tabulate (3, fn x => x + 1);