如何在tcl中设置键控列表?
当我要在代码中使用“keylset”时,它得到了一个错误“无效的命令名”keylset”“如何在tcl中设置键控列表?,tcl,Tcl,当我要在代码中使用“keylset”时,它得到了一个错误“无效的命令名”keylset”“ 设置列表1“a 1 b 2 c 3 d 4” 对于{set i 0}{$i
设置列表1“a 1 b 2 c 3 d 4”
对于{set i 0}{$i<[llength$list1]}{incr i}{
keylset klist[lindex$list1$i][lindex$list1[expr$i+1]]
集合列表
}
把$klist
请给我一些解决方案。键控列表命令是TclX扩展包的一部分。 为了让它们出现在脚本中,您必须发出以下命令(这将安排加载相关的共享库并获取脚本) 如果您使用的是ActiveTcl发行版,您可以执行以下操作:
teacup update
它安装了许多软件包的当前版本,其中包括TclX。您可能需要在Windows上的提升命令shell中执行此操作,或者在OSX上使用sudo
作为前缀
如果您在OSX上使用MacPorts,tclx
在MacPorts系统中(也是正确的版本)
由于有许多可能的发行版,或者您可以自己从源代码构建它,如果您的平台和设置不是我上面列出的,您需要仔细指定它是什么。您确定您的代码是正确的吗?它给出了结果
{a 1} {1 b} {b 2} {2 c} {c 3} {3 d} {d 4} {4 {}}
那是你想要的吗?如果你想
{a 1} {b 2} {c 3} {d 4}
您应该在每次迭代中将i
的值增加2(incr i2
)
您可以通过这种方式获得相同的结果(需要Tcl 8.5或更高版本):
或通过(需要Tcl 8.6和TclX包)
对于较旧的版本,这会执行相同的操作:
set klist [list]
foreach {a b} "a 1 b 2 c 3 d 4" {
lappend klist [list $a $b]
}
文件:
对于TclX文档,似乎是一个很好的起点。
keylset
是软件包中的一个命令。我已经安装了tclx8.4,但问题仍然存在。
sudo port install tclx
{a 1} {1 b} {b 2} {2 c} {c 3} {3 d} {d 4} {4 {}}
{a 1} {b 2} {c 3} {d 4}
set klist [lmap {a b} "a 1 b 2 c 3 d 4" {list $a $b}]
keylset klist {*}"a 1 b 2 c 3 d 4"
set klist [list]
foreach {a b} "a 1 b 2 c 3 d 4" {
lappend klist [list $a $b]
}