代码之家  ›  专栏  ›  技术社区  ›  patzi

如何初始化具有堆栈的数组?

  •  -1
  • patzi  · 技术社区  · 8 年前

    尝试:

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

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

    2 回复  |  直到 8 年前
        1
  •  2
  •   ivg    8 年前

    你应该使用 Array.init 创建数组 堆栈实例

    Array.init 256 (fun _ -> Stack.create ())
    

    如果你愿意的话 Array.make 256 (Stack.create ()) 然后,您将创建一个堆栈实例,并将其分配给数组的每个元素。因此 Stack.push 4 symbol_table.(0) 将符号推入所有256个堆栈。

    另请参见相关 answer .

        2
  •  1
  •   glennsl Namudon'tdie    8 年前

    使用时将推断类型:

    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初始化阵列 分离 Array.make :

    let symbol_table : int Stack.t array = Array.init 256 (fun _ -> Stack.create ())