SML:定义一个数组

问题描述

请原谅我,如果它是微不足道的但是 我正在阅读 SML 中的数组文档,但我很困惑。我看到了很多函数,但我如何制作自己的数组;我如何初始化一个? (一切,我都试过了)
例如,一个列表是这样初始化的:

 val l = [1,2,3];

如果我想让 [1,3] 成为一个 1x3 的数组?
我找到了如何初始化一个数组但只有一个值,例如:

array(4,0) (*creates [0,0] *)

但是 [1,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);