Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List TCL:检查变量是否为列表_List_Variables_Tcl - Fatal编程技术网

List TCL:检查变量是否为列表

List TCL:检查变量是否为列表,list,variables,tcl,List,Variables,Tcl,是否可以检查变量是否为TCL中的列表?对于var1和var2llength给出1。我认为这两个变量是相同的。它们都是包含1个元素的列表。我说的对吗?您可以尝试字符串是list$var1,但这两种形式都可以接受-它只会在一些无法从语法上解释为list的内容上返回false,例如,因为有一个不匹配的括号,如“aa{bb”.这两件事被认为是完全相同的,并将产生相同的字节码(除了用于指示常量内容所在位置的任何字节偏移量,该位置通常不向脚本公开,因此您可以忽略它,以及由于变量名而产生的明显差异).从语义上

是否可以检查变量是否为TCL中的列表?对于
var1
var2
llength
给出
1
。我认为这两个变量是相同的。它们都是包含1个元素的列表。我说的对吗?

您可以尝试
字符串是list$var1
,但这两种形式都可以接受-它只会在一些无法从语法上解释为list的内容上返回false,例如,因为有一个不匹配的括号,如“aa{bb”.

这两件事被认为是完全相同的,并将产生相同的字节码(除了用于指示常量内容所在位置的任何字节偏移量,该位置通常不向脚本公开,因此您可以忽略它,以及由于变量名而产生的明显差异).从语义上讲,大括号是一种引用机制,而不是列表(或脚本,或…)的指示符

您需要编写代码,以避免假定它可以通过检查值的类型来查找内容。
123
的类型可以是许多不同的内容,例如整数、列表(长度为1),unicode字符串或命令名。Tcl的语义基于您不询问值的类型,而只是使用命令并让它们根据需要将值强制为正确的类型。Tcl在这方面与许多其他语言不同

由于这种不同的方法,一般来说,回答关于这一点的问题并不容易:答案太长,所有可能的情况都需要考虑,但大多数都与你真正想要做的事情无关。尽管问一些具体的问题,我们将能够更容易地告诉你

set var1 A

set var2 {A}