TCL需要帮助吗
在这种情况下,TCL需要帮助吗,tcl,Tcl,在这种情况下,“和[列表]之间的确切区别是什么?为什么最后一种情况下的j值没有替换为以(引号)开头的值?为什么在%设置[list{$j}]案例中,j值没有被替换?关于这一点,我真的很困惑。你可以阅读这篇文章,其中谈到了你在这里提出的问题 基本上,它讨论了Tcl中的分组和不同的替换,我认为这将真正让您理解您所问的问题 在这种情况下,“”和[列表]之间的确切区别是什么 你的问题很模糊。如果你问设置一个[list{$j}]和设置一个“[list{$j}]”之间到底有什么区别,我会说没有区别。在这两种情
“
和[列表]
之间的确切区别是什么?为什么最后一种情况下的j
值没有替换为以(引号)开头的值?为什么在%设置[list{$j}]
案例中,j
值没有被替换?关于这一点,我真的很困惑。你可以阅读这篇文章,其中谈到了你在这里提出的问题
基本上,它讨论了Tcl中的分组和不同的替换,我认为这将真正让您理解您所问的问题
在这种情况下,“”和[列表]之间的确切区别是什么
你的问题很模糊。如果你问设置一个[list{$j}]
和设置一个“[list{$j}]”
之间到底有什么区别,我会说没有区别。在这两种情况下,变量a
都被设置为您定义的列表
引号用于将单词组合在一起形成一个参数。如果您有以下情况,您的代码会有所不同:
% set j 1
1
% set a [list $j]
1
% set a [list {$j}]
{$j}
% set a "$j"
1
% set a "[list {$j}]"
{$j}
及
第一行给出变量a
4个参数,即:This
,list
,包含:
和[list{$j}]
,但这会给您一个错误,因为set
最多只接受两个参数,一个是变量名,另一个是变量值
第二行是给a
一个按引号分组的单个变量“此列表包含:[list{$j}]”
引号将允许命令替换,以便执行命令list
,并将返回值提供给变量a
为什么最后一种情况下的j
值没有替换为以(引号)开头的值?为什么在%设置[list{$j}]
案例中,j
值没有被替换
最里面的分组是{$j}
,大括号防止任何形式的替换发生。发生的情况是,您首先得到“[list{$j}]”
,Tcl对命令进行求值:[list{$j}]
。列表的第一个元素是一个未替换的字符串$j
,因此list
返回$j
,而不是变量j
的值
要使列表返回变量j
的值,只需删除大括号:
set a "This list contains: [list {$j}]"
由于[list$j]
是引号中唯一的内容,因此您可以删除引号以产生相同的结果
set a "[list $j]"
请注意,列表中的元素通常以大括号形式返回:
set a [list $j]
请注意,这相当于:
% puts [list "item 1" "item 2"]
{item 1} {item 2}
因为没有需要执行的替换。但是
% puts [list {item 1} {item 2}]
{item 1} {item 2}
我认为这应该足够简单,以显示替代和分组在Tcl中是如何工作的。如果你应用了我所解释的内容,应该很容易理解为什么会发生上述每一种情况。你首先需要的帮助是如何为问题设计有效的标题。你需要通读感谢的解释。但我想知道以下两种说法之间的区别设置一个“1234”1234%为那些特定的语句设置一个[list 1234]1234%@用户,没有区别。将
1
替换为$xyz
,如果该变量包含复合值,则可能会观察到差异。
% puts [list {item 1} {item 2}]
{item 1} {item 2}
% set a "item 1"
item 1
% set b "item 2"
item 2
% puts [list "$a" "$b"]
{item 1} {item 2}
% puts [list $a $b]
{item 1} {item 2}
% puts [list {$a} {$b}]
{$a} {$b}
% puts [list "$a $b"]
{item 1 item 2}
% puts [list {$a $b}]
{$a $b}