Tcl 两个未设置的数组之间有什么区别
我们有两种方法可以取消设置数组中的元素:Tcl 两个未设置的数组之间有什么区别,tcl,Tcl,我们有两种方法可以取消设置数组中的元素:unset和array unset。有什么区别 这是我的密码: >cat /tmp/arr_unset.tcl proc parr {arr} { global arr1 foreach {str num} [array get $arr] { puts "$str:$num" } } array set arr1 {one 1 two 2 three 3} parr arr1 array unset ar
unset
和array unset
。有什么区别
这是我的密码:
>cat /tmp/arr_unset.tcl
proc parr {arr} {
global arr1
foreach {str num} [array get $arr] {
puts "$str:$num"
}
}
array set arr1 {one 1 two 2 three 3}
parr arr1
array unset arr1 two
parr arr1
unset arr1(one)
parr arr1
以下是跑步记录:
>tclsh /tmp/arr_unset.tcl
three:3
two:2
one:1
three:3
one:1
three:3
看起来它们是相同的,或者上面的代码没有显示差异?来自:
数组未设置arrayName?模式
取消设置数组中与模式匹配的所有元素(使用字符串匹配的匹配规则)。如果arrayName不是数组变量的名称,或者数组中没有匹配的元素,则不会引发错误。如果pattern被省略并且arrayName是一个数组变量,那么该命令将取消设置整个数组。该命令始终返回空字符串
它删除与通配符模式匹配的所有条目(或所有条目,如果没有给定模式)<代码>取消设置删除特定条目
例如:
% array set foo {cat 1 dog 2 cow 3}
% parray foo
foo(cat) = 1
foo(cow) = 3
foo(dog) = 2
% array unset foo c*
% parray foo
foo(dog) = 2
注意:
unset
也可以删除整个数组;在数组中,unset-ary
和array-unset-ary
是等效的。(我对导致array unset
的用例感到好奇,但那是在我的时代之前…)Tcl数组是散列。多维数组可以通过使用一些分隔符连接键来模拟。用例的一个例子是数组元素,例如:userdata(user1,name)
。然后,要删除与user1相关的所有信息,可以使用数组unset userdata user1,*
。