Types 如何使用堆栈初始化数组?

Types 如何使用堆栈初始化数组?,types,syntax,ocaml,Types,Syntax,Ocaml,尝试: let symbol_table = Array.make 256 Stack.create() 但是,我在创建数组时没有指定堆栈的类型,因此我想知道如何通过指定堆栈的类型来实现这一点。使用它时将推断出类型: let symbol_table = Array.make 256 (Stack.create ()) let () = Stack.push 4 symbol_table.(0) 但如果需要,也可以在let绑定上指定类型: let symbol_table : int Sta

尝试:

let symbol_table = Array.make 256 Stack.create()

但是,我在创建数组时没有指定堆栈的类型,因此我想知道如何通过指定堆栈的类型来实现这一点。

使用它时将推断出类型:

let symbol_table = Array.make 256 (Stack.create ())
let () = Stack.push 4 symbol_table.(0)
但如果需要,也可以在let绑定上指定类型:

let symbol_table : int Stack.t array = Array.make 256 (Stack.create ()) 您应该使用创建不同堆栈实例的数组

Array.init 256 (fun _ -> Stack.create ())
如果执行
Array.make 256(Stack.create())
,则将创建堆栈的一个实例,并将其分配给数组的每个元素。因此,
Stack.push 4 symbol\u table.(0)
将一个符号推入所有256个堆栈


另请参阅相关的。

注意,此代码创建了对同一堆栈的引用数组,这是有问题的,因为
stack.t
是一种可变数据类型
Array.init 256(fun\ux->Stack.create())
避免了这个问题。
Array.init 256 (fun _ -> Stack.create ())