1

我想将列表的类型设置为整数,但我不知道如何执行此操作。我可以执行以下操作:

let listOfInts = [];

但这只会使 listOfInts 成为一个允许放入任何类型的列表。如何强制 listOfInts 只是一个整数列表?

这是为了在 OCaml 中创建一个字典,将字符串(键)映射到 int(值)。为简单起见,我只是将值设为字符串的长度。有人可以帮我解决这个问题吗?提前致谢。

4

2 回答 2

7

显式声明类型。

let (listOfInts : int list) = [];
于 2012-06-14T08:08:00.913 回答
4

在这里通过注释强制类型是没有用的:您可以[]在任何类型中使用,但是一旦您使用它来创建特定类型的元素列表,它将被实例化为正确的类型。

对于既不是完全推断也不是泛化的具有可变状态的值类型(例如ref []),具有注释有时很有用。

我不明白这与您在字符串和整数之间建立映射的更广泛问题有何关系,因为这根本不涉及列表。如果你想要一个可变的地图,你可以使用Hasthbl,否则Map

module StringMap = Map.Make(String)
let m = StringMap.add "foo" 3 StringMap.empty

m有类型int StringMap.t

于 2012-06-14T12:23:27.227 回答