我有一个返回列表列表的过程。我无法弄清楚如何访问内部列表而不先拆分它们。我确定必须有一个更清洁的方式。
例如,这个:
proc return_l_of_l {} {
set x {a b c}
set y {d e f}
return [list [list $x] [list $y]]
}
set l [return_l_of_l]
set x_list [lindex $l 0]
set y_list [lindex $l 1]
foreach x $x_list { puts $x }
foreach y $y_list { puts $y }
输出:
a b c
d e f
不
a
b
c
d
e
f
答案 0 :(得分:3)
问题在于这一行:
return [list [list $x] [list $y]]
由于x
和y
已经拥有列表,因此它会列出列表列表。你应该这样做:
return [list $x $y]
或可能:
return [list [list {*}$x] [list {*}$y]]
答案 1 :(得分:0)
proc return_l_of_l {} {
set x {a b c}
set y {d e f}
return [list [list $x] [list $y]]
}
返回两个列表的列表,每个列表由一个元素组成 - a b c
和d e f
。这是因为{a b c}
和{d e f}
已经是可以解释为列表的构造。
据说你只需要
return [list $x $y]