For loop tcl中的for循环存在问题
嗨,我正在尝试以下代码,但我得到一个错误。这是一个我给出参考值的过程,这个过程应该在列表中上移或下移。 代码是:For loop tcl中的for循环存在问题,for-loop,tcl,For Loop,Tcl,嗨,我正在尝试以下代码,但我得到一个错误。这是一个我给出参考值的过程,这个过程应该在列表中上移或下移。 代码是: proc getvalue {reference direction} { if {[regexp {(.*)(x.*$)} $reference cellname family string]} { puts $family puts $string } else { puts " No string matched"
proc getvalue {reference direction} {
if {[regexp {(.*)(x.*$)} $reference cellname family string]} {
puts $family
puts $string
} else {
puts " No string matched"
}
set mylist [T_sel2list [get_lib_cells "*/*${family}*"] ]
set sorted_finallist [lsort $mylist]
set i [lsearch $sorted_finallist *$string ]
if {$direction == "DOWN"} {
if {$direction == "DOWN" && $i > 0} {
incr i -1
set requiredDOWN [lindex $sorted_finallist $i]
puts "$requiredDOWN"
} else {
puts "First in the line"
} else {$direction == "UP" && $i >= 0 && $i < [llength $sorted_finallist] -2} {
incr i
set requiredUP [lindex $sorted_finallist $i]
puts "$requiredUP"
} else {
puts "Last in the line"
}
}
}
proc getvalue{reference direction}{
如果{[regexp{(.*)(x.*$)}$reference cellname family string]}{
放入$family
放入$string
}否则{
放置“没有匹配的字符串”
}
set mylist[T_sel2list[get_lib_cells”*/*${family}*“]]
设置已排序的\u finallist[lsort$mylist]
集合i[lsearch$sorted\u finallist*$string]
如果{$direction==“DOWN”}{
如果{$direction==“DOWN”&&$i>0}{
增量i-1
设置requiredDOWN[lindex$sorted\u finallist$i]
放入“$requiredDOWN”
}否则{
把“排在第一位”
}否则{$direction==“UP”&&$i>=0&&$i<[llength$sorted\u finallist]-2}{
增量i
设置所需设置[lindex$sorted\u finallist$i]
放入“$requiredUP”
}否则{
把“最后一个放在队伍里”
}
}
}
我得到一个错误,说:
错误:错误#args:if命令中“else”子句后的额外单词
有关详细信息,请使用错误信息。(CMD-013)
我不知道for循环有什么问题。谁能帮我一下吗 也许这就是你的意思
if {$direction == "DOWN"} {
if {$direction == "DOWN" && $i > 0} {
incr i -1
set requiredDOWN [lindex $sorted_finallist $i]
puts "$requiredDOWN"
} else {
puts "First in the line"
}
} else {
if {$direction == "UP" && $i >= 0 && $i < [llength $sorted_finallist] - 2} {
incr i
set requiredUP [lindex $sorted_finallist $i]
puts "$requiredUP"
} else {
puts "Last in the line"
}
}
如果{$direction==“DOWN”}{
如果{$direction==“DOWN”&&$i>0}{
增量i-1
设置requiredDOWN[lindex$sorted\u finallist$i]
放入“$requiredDOWN”
}否则{
把“排在第一位”
}
}否则{
如果{$direction==“UP”&&$i>=0&&$i<[llength$sorted\u finallist]-2}{
增量i
设置所需设置[lindex$sorted\u finallist$i]
放入“$requiredUP”
}否则{
把“最后一个放在队伍里”
}
}
嗯,您可能想用elseif
替换一些else
。我将所有其他项都改为elseif,但最后一项除外,错误消息不会出现。对于向下选项,该过程工作正常,但对于向上选项,它不显示任何输出,也不显示任何错误消息。for循环没有进入以下行:}else{$direction==“UP”&&$i>=0&&$i<[llength$sorted\u finallist]-2}{这是因为如果$direction
是DOWN
,则只输入那些if
子句,否?