keylset bug in Tcl 8.4 and 8.5?

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

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

  • 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
    

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

    链接地址: http://www.djcxy.com/p/67736.html

    上一篇: 文件读写tcl

    下一篇: Tcl 8.4和8.5中的密钥集错误?