List TCL:检查变量是否为列表
是否可以检查变量是否为TCL中的列表?对于List TCL:检查变量是否为列表,list,variables,tcl,List,Variables,Tcl,是否可以检查变量是否为TCL中的列表?对于var1和var2llength给出1。我认为这两个变量是相同的。它们都是包含1个元素的列表。我说的对吗?您可以尝试字符串是list$var1,但这两种形式都可以接受-它只会在一些无法从语法上解释为list的内容上返回false,例如,因为有一个不匹配的括号,如“aa{bb”.这两件事被认为是完全相同的,并将产生相同的字节码(除了用于指示常量内容所在位置的任何字节偏移量,该位置通常不向脚本公开,因此您可以忽略它,以及由于变量名而产生的明显差异).从语义上
var1
和var2
llength
给出1
。我认为这两个变量是相同的。它们都是包含1个元素的列表。我说的对吗?您可以尝试字符串是list$var1
,但这两种形式都可以接受-它只会在一些无法从语法上解释为list的内容上返回false,例如,因为有一个不匹配的括号,如“aa{bb”.这两件事被认为是完全相同的,并将产生相同的字节码(除了用于指示常量内容所在位置的任何字节偏移量,该位置通常不向脚本公开,因此您可以忽略它,以及由于变量名而产生的明显差异).从语义上讲,大括号是一种引用机制,而不是列表(或脚本,或…)的指示符
您需要编写代码,以避免假定它可以通过检查值的类型来查找内容。123
的类型可以是许多不同的内容,例如整数、列表(长度为1),unicode字符串或命令名。Tcl的语义基于您不询问值的类型,而只是使用命令并让它们根据需要将值强制为正确的类型。Tcl在这方面与许多其他语言不同
由于这种不同的方法,一般来说,回答关于这一点的问题并不容易:答案太长,所有可能的情况都需要考虑,但大多数都与你真正想要做的事情无关。尽管问一些具体的问题,我们将能够更容易地告诉你
set var1 A
set var2 {A}