尝试在 Tcl 中使用 keylset 和 keylget
Trying to use keylset and keylget in Tcl
当我像这样使用 tcl 代码时它工作正常
keylset mylist LastName Hello FirstName World
puts [keylget mylist LastName]
puts [keylget mylist FirstName]
输出:
你好
世界
现在,如果我想将这些键和值对存储在一个变量中,那么 运行 它会出现错误
set mylist2 {LastName Hello FirstName World}
keylset mylist $mylist2
puts [keylget mylist LastName]
我收到一个错误 - 我知道我为 keylset 使用了错误的参数,但我不知道我还能做什么。
我的第一个建议是将该参数列表扩展到 keylset
,因为它都适用于直接参数:
keylset mylist {*}$mylist2
(在旧版本的 Tcl 中,您会使用 eval keylset mylist $mylist2
代替,但不推荐这样做,因为它具有潜在的评估风险,而无风险版本 eval [linsert $mylist2 0 keylset mylist]
确实很糟糕. 这是从 8.4 到 8.5 的重大语言变化,基本上 eval
一夜之间几乎过时了。)
当我像这样使用 tcl 代码时它工作正常
keylset mylist LastName Hello FirstName World
puts [keylget mylist LastName]
puts [keylget mylist FirstName]
输出: 你好 世界
现在,如果我想将这些键和值对存储在一个变量中,那么 运行 它会出现错误
set mylist2 {LastName Hello FirstName World}
keylset mylist $mylist2
puts [keylget mylist LastName]
我收到一个错误 - 我知道我为 keylset 使用了错误的参数,但我不知道我还能做什么。
我的第一个建议是将该参数列表扩展到 keylset
,因为它都适用于直接参数:
keylset mylist {*}$mylist2
(在旧版本的 Tcl 中,您会使用 eval keylset mylist $mylist2
代替,但不推荐这样做,因为它具有潜在的评估风险,而无风险版本 eval [linsert $mylist2 0 keylset mylist]
确实很糟糕. 这是从 8.4 到 8.5 的重大语言变化,基本上 eval
一夜之间几乎过时了。)