Tcl 8.4 和 8.5 中的 keylset 错误?

发布于 2024-11-11 18:19:04 字数 330 浏览 2 评论 0原文

考虑以下简单的练习:

package require Tclx
keylset myArray "v1.5" "ready"
puts $myArray

预期输出:

{v1.5 ready}

实际输出:

{v1 {{5 ready}}}

我的问题是

  1. 这似乎是 keylset 中的错误,我已在 8.4 和 8.5 上确认了此行为
  2. 我该如何解决它?我尝试了多种方法引用密钥均无济于事。

Consider the following simple exercise:

package require Tclx
keylset myArray "v1.5" "ready"
puts $myArray

The expected output:

{v1.5 ready}

The actual output:

{v1 {{5 ready}}}

My questions are

  1. This seems to be an error in keylset, I have confirmed this behavior on both 8.4 and 8.5
  2. How do I get around it? I have tried several ways to quote the key to no avail.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独闯女儿国 2024-11-18 18:19:04

这不是一个错误,而是一个功能。 :)
点是键控列表中的分层键分隔符。

请参阅示例进行解释:

keylset myArray {v1.5} "ready" {v1.6} "empty"

puts $myArray                ;# ==> {v1 {{5 ready} {6 empty}}}
puts [keylget myArray v1]    ;# ==> {5 ready} {6 empty}
puts [keylget myArray v1.5]  ;# ==> ready
puts [keylget myArray v1.6]  ;# ==> empty

It's not a bug, it's a feature. :)
Dot is a hierarchical key separator in keyed list.

See the example for explanation:

keylset myArray {v1.5} "ready" {v1.6} "empty"

puts $myArray                ;# ==> {v1 {{5 ready} {6 empty}}}
puts [keylget myArray v1]    ;# ==> {5 ready} {6 empty}
puts [keylget myArray v1.5]  ;# ==> ready
puts [keylget myArray v1.6]  ;# ==> empty
围归者 2024-11-18 18:19:04

keylset 是一个 Tclx 命令。我真的建议您查看 Tcl 中的 dict 命令8.5

keylset is a Tclx command. I would really recommend you to take a look to the dict command from Tcl 8.5

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文