代码之家  ›  专栏  ›  技术社区  ›  Amir Rachum

如何在Tcl中初始化数组?

  •  7
  • Amir Rachum  · 技术社区  · 14 年前

    我有以下代码(简化):

    proc parseFile {filename results_array} {
        upvar $results_array results
        set results(key) $value
    }
    
    set r1 {}
    parseFile "filename" r1
    

    我得到一个错误:

    错误:无法设置“results(key)”:变量不是数组

    3 回复  |  直到 14 年前
        1
  •  4
  •   msw    14 年前

    在Tcl中不初始化数组,它们只是在设置成员时出现:

    proc stash {key array_name value} {
        upvar $array_name a
        set a($key) $value
    }
    
    stash one pvr 1
    stash two pvr 2
    array names pvr
    

    two one
    
        2
  •  23
  •   Bryan Oakley    14 年前

    要初始化数组,请使用“array set”。如果只想创建内部数组对象而不给它任何值,可以给它一个空列表作为参数。例如:

    array set foo {}
    

    如果要给它赋值,可以给它一个正确引用的键/值对列表:

    array set foo {
        one {this is element 1}
        two {this is element 2}
    }
    
        3
  •  0
  •   LonIslam i.karayel    7 年前

    设置标记(英语)80