请参阅以下代码:
> foreach a {k l { jo k } {jo i } k } { puts $a}
k
l
jo k
jo i
k
问题是,如果我得到一个具有列表字符串表示的字符串会发生什么:
> foreach a "{k l { jo k } {jo i } k }" { puts $a}
k l { jo k } {jo i } k
如何将字符串"{k l { jo k } {jo i } k }"
转换为与{k l { jo k } {jo i } k }
相同的列表。使用subst和eval,但这不起作用。
谢谢。
答案 0 :(得分:3)
"splat" operator也有效:
% foreach a "{k l { jo k } {jo i } k }" { puts $a}
k l { jo k } {jo i } k
% foreach a {*}"{k l { jo k } {jo i } k }" { puts $a}
k
l
jo k
jo i
k
答案 1 :(得分:2)
该字符串看起来像是一个列表,所以让我们试试lindex
...
% foreach a [lindex "{k l { jo k } {jo i } k }" 0] { puts $a}
k
l
jo k
jo i
k