【发布时间】:2014-02-26 18:33:43
【问题描述】:
我有两个列表,我匹配它们并打印任何差异。这两个列表是 FPGA 站内的电缆连接。我需要确保:
$list1上的所有连接都存在于$list2上,如果不存在,它应该将错误保存在另一个列表中$list2上的所有连接都存在于$list1上,所以我没有得到任何“错误”连接。任何一个列表中都不存在的连接应保存到另一个变量中。
列表格式如下:
{{A.B2} {B.B3}}
$list2 等价物可能是:
{{B.B3} {A.B2}}
^ 即使交换了连接,它仍然有效!我将这两个都保存在循环内的不同变量中以执行此操作:
if {
$physical == "$project" && $physical2 == "$project2"
|| $physical == "$project2" && $physical2 == "$project"
} then {
lappend verified "$project ($project2) VERIFIED\n"
#incr cablecounter
set h 0
} elseif {
$physical == "$project" && $physical2 != "$project2"
|| $physical != "$project" && $physical2 == "project2"
|| $physical == "$project2" && $physical2 != "project"
|| $physical != "$project2" && $physical2 == "project"
} then {
lappend nonverified "$project to $project2 NOT connected. Please check $physical and $physical2\n"
} else {
set g [expr $g - 1]
incr h
#puts "\n [llength configuredConnections]"
if {
$h > [llength $configuredConnections] && $project != "$physical" && $project2 != "$physical2"
|| $h > [llength $configuredConnections] && $project != "physical2" && $project2 != "$physical"
} {
lappend nonverified "$project to $project2 wrong connection found. Please remove.\n"
set h 0; incr g
}
}
这给了我所有错误的连接等,但不是告诉我$list1 上的元素在$list2 上不存在,而是将其存储到$nonverified,并且列表是“错误连接”而不是将其列为“未连接”。
我是 TCL 新手,不知道该怎么办!
编辑:$project 和 $project2 是 $list1 中的两个元素,$physical $physical2 是 $list2 中的元素。
我使用的是 Tcl 8.4
【问题讨论】:
-
您可能希望使用括号
()对您的条件进行分组,以便它更具可读性,并且您可以确定首先要评估的内容。