检查TCL中是否存在列表元素无法找到它

时间:2016-10-06 12:08:07

标签: tcl

我有tcl字符串列表

set NameList [list 'foo' 'moo 1' 'too 1 3' 'Enterprise 1'] 
and i try to check if "foo" is in the list but i get false
set test "foo"
 if {[lsearch -exact $NameList $test] >= 0} {    
        return 1
  }   

更新
我用单引号更改了Double引号但是我用" foo"
设置了变量测试 但它仍然无法正常工作

1 个答案:

答案 0 :(得分:4)

当我尝试使用您的代码时,它对我来说非常正常:

% set NameList [list "foo" "moo 1" "too 1 3" "Enterprise 1"] 
foo {moo 1} {too 1 3} {Enterprise 1}
% if {"foo" in $NameList} { puts "got it!" }
got it!
% lsearch -exact $NameList "foo"
0
% lsearch -exact $NameList "not there at all"
-1

使用{ ... }代替" ... "自动引用字符串不是您需要担心的任何内容。它不会影响列表中的值;它们将是您指定的字符串。

哦,对于简单的字面值限制测试,请在上面使用它时考虑in运算符。它更清楚,并说出你的意思更多。可在任何当前支持的Tcl版本中使用(即,在8.5中引入)。