【问题标题】:Tcl array get does not work with :: in procTcl 数组 get 不适用于 proc 中的 ::
【发布时间】:2016-02-24 14:07:00
【问题描述】:

请看下面的 Tcl 代码:

proc foo {} {
    puts "env get is:[array get ::env "DODA" ]"
}
set env("DODA") bar
foo
exit

我希望输出是
env get is:{DODA bar}
相反,它只返回数组get的空列表,即:
env get is:
任何想法我做错了什么?这是 Tcl 8.5

【问题讨论】:

    标签: arrays tcl global environment


    【解决方案1】:

    Tcl 中,数组是关联数组。这样,当涉及到数组的索引时,双引号和大括号就像单独的实体一样。

    % set user(name) dinesh
    dinesh
    % set user("name") DINESH
    DINESH
    % set user({name}) Dinesh
    Dinesh
    % parray user
    user("name") = DINESH
    user(name)   = dinesh
    user({name}) = Dinesh
    % array size user
    3
    

    如您所见,name"name"{name} 条目是不同的。

    现在,在您的情况下,您已经创建了带有双引号的索引"DODA"

    % set env("DODA") bar
    bar
    % puts "env get is:[array get ::env \"DODA\" ]"
    env get is:{"DODA"} bar
    %
    

    否则,

    % set env(DODA) bar
    bar
    % puts "env get is:[array get ::env DODA ]"
    env get is:DODA bar
    %
    

    【讨论】:

    • 嗯,这就解决了......干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多