List TCL列表避免字符串拆分

List TCL列表避免字符串拆分,list,split,tcl,List,Split,Tcl,有没有办法避免在列表中拆分字符串 例如,我有一个列表,其中我附加了几个带空格的字符串: set l [list] lappend l "hello guy how are you ?" lappend l "chocolate is very good" 然后我想通过foreach循环处理列表中的每个字符串: foreach str $l { puts "$str" } 但是当它到达列表中的最后一个字符串时,最后一个字符串的所有元素都被拆分。如何避免这种情况 谢谢。我怀疑你所拥有的实

有没有办法避免在列表中拆分字符串

例如,我有一个列表,其中我附加了几个带空格的字符串:

set l [list]
lappend l "hello guy how are you ?"
lappend l "chocolate is very good"
然后我想通过foreach循环处理列表中的每个字符串:

foreach str $l {
   puts "$str"
} 
但是当它到达列表中的最后一个字符串时,最后一个字符串的所有元素都被拆分。如何避免这种情况


谢谢。

我怀疑你所拥有的实际上是在某个地方:

lappend l "chocolate" "is" "very" "good"
# And not this...
#lappend l "chocolate is very good"
这是一个非常重要的区别。
lappend
命令是可变的;它接受您提供的尽可能多的参数(在变量名之后),并将每个参数作为自己的列表元素附加到给定变量。这意味着省略引用不会导致错误;它在一般情况下是正确和有用的,即使不是在你的特殊情况下

请注意,
lappend
非常小心;它不会错引任何东西


另一种可能是您使用了
append
而不是
lappend
。将其参数作为字符串而不是列表项追加。(碰巧许多句子看起来很像Tcl列表。)这两个命令之间的区别是基本的,如果您很匆忙,可能有点容易遗漏

append l " chocolate is very good"
# vs.
lappend l " chocolate is very good"

我怀疑你所拥有的实际上是在某个地方:

lappend l "chocolate" "is" "very" "good"
# And not this...
#lappend l "chocolate is very good"
这是一个非常重要的区别。
lappend
命令是可变的;它接受您提供的尽可能多的参数(在变量名之后),并将每个参数作为自己的列表元素附加到给定变量。这意味着省略引用不会导致错误;它在一般情况下是正确和有用的,即使不是在你的特殊情况下

请注意,
lappend
非常小心;它不会错引任何东西


另一种可能是您使用了
append
而不是
lappend
。将其参数作为字符串而不是列表项追加。(碰巧许多句子看起来很像Tcl列表。)这两个命令之间的区别是基本的,如果您很匆忙,可能有点容易遗漏

append l " chocolate is very good"
# vs.
lappend l " chocolate is very good"

附加是避免这种情况的最佳方法。简化附加:

 % set l [list]
 % set l "$l hello guy how are you ?"
  hello guy how are you ?
 % set l "$l chocolate is very good"
  hello guy how are you ? chocolate is very good


附加是避免这种情况的最佳方法。简化附加:

 % set l [list]
 % set l "$l hello guy how are you ?"
  hello guy how are you ?
 % set l "$l chocolate is very good"
  hello guy how are you ? chocolate is very good


当我执行您的示例时,字符串不会被拆分。我也是。
放$l的是什么?我希望看到
{你好吗?}{巧克力非常好}
对不起,我在添加列表之前犯了拆分错误。列表按预期工作。当我执行您的示例时,字符串没有拆分。我也是。
放$l的是什么?我希望看到
{你好吗?}{巧克力非常好}
对不起,我在添加列表之前犯了拆分错误。列表按预期运行。感谢您进行此比较。感谢您进行此比较。