为什么TCL脚本中的数组大小不能由数组大小正确给定<;数组名称>;

为什么TCL脚本中的数组大小不能由数组大小正确给定<;数组名称>;,tcl,Tcl,这里我有一个由4个元素组成的数组,但它将值打印为11,那么大小是如何变为11而不是4的呢 array set ipname {UART TEST SPI I2C} set bsize [array size ipname]; puts "$bsize" 数组集(在您的情况下,它只生成两个元素!)不会删除数组中的任何现有内容,以前数组中必须包含9到11个元素。如果我在裸tclsh中运行您的代码,它将打印2。如果我接着使用parray,它会告诉我它做了什么: % parray ipname ipn

这里我有一个由4个元素组成的数组,但它将值打印为11,那么大小是如何变为11而不是4的呢

array set ipname {UART TEST SPI I2C}
set bsize [array size ipname];
puts "$bsize"

数组集
(在您的情况下,它只生成两个元素!)不会删除数组中的任何现有内容,以前数组中必须包含9到11个元素。如果我在裸
tclsh
中运行您的代码,它将打印
2
。如果我接着使用
parray
,它会告诉我它做了什么:

% parray ipname
ipname(SPI)  = I2C
ipname(UART) = TEST

数组集
(在您的情况下,它只生成两个元素!)不会删除数组中的任何现有内容,以前数组中必须包含9到11个元素。如果我在裸
tclsh
中运行您的代码,它将打印
2
。如果我接着使用
parray
,它会告诉我它做了什么:

% parray ipname
ipname(SPI)  = I2C
ipname(UART) = TEST

一旦我们在一个数组中有4个元素,只有当它的大小增加时,它才会给出正确的大小??i、 e如果元素减少,它总是给出4,如果超过4,它会提供准确的结果?请尝试:
设置bsize[llength[array names ipname]]
一旦数组中有4个元素,只有当其大小增加时,它才会给出正确的大小??i、 e如果元素减少,则始终为4,如果超过4,则提供准确的结果?请尝试:
set bsize[llength[array names ipname]]