我有一个foreach
循环执行一些处理并将变量附加到现有列表中,如下所示:
set lst_tmp [list];
foreach item $lst_entities {
set lst_tmp $item; #1
set result [::somefunc $item];
if {$result ne -1} {
lappend lst_tmp $result; #2
}
}
proc ::somefunc {entityType} {
if {$entityType eq ""} {
return -1;
}
if {$entityType in {mats props comps}} {
return 1;
}
return 0;
}
问题是我的lst_tmp
在#1时填充了$item
,但在#2之后,lst_tmp
值就像{item1 result}
。它不会评估$result
的值,并直接在列表中附加变量名称。
我还没有在tcl上工作过,所以我不确定我对lappend的使用是否是错误的。
有什么意见吗?