Учитывая данныеКак восстановить ключевые значения массива в Tcl
array set color {a red b green c blue}
set keylist [array names $color]
pointlist {{1 2 3 4} {5 6 7 8} {9 10 11 12} {13 14 15 16}}
получить новый список после выполнения процедуры.
newlist {b b b b} # Note: length of newlist is same as length of pointlist
Вопрос: когда я запускаю цикл, эти значения b должны быть заменены, например, зеленым цветом.
for {set i 0} { $i < [llength $pointlist]} {incr i } {
lassign [lindex $pointlist $i] x1 y1 x2 y2
APICommand -points "$x1,$y1,$x2,$y2" -color $color($keylist)
}
Теперь это $ цвет ($ KeyList) не доходят мне правильный результат и ошибки, говоря: не умеет читать «цвет (красный синий зеленый)»: нет такого элемента в массиве
Вместо Я хочу, чтобы первый набор из 4 очков получил зеленый цвет, который является значением b. Аналогично, следующий набор из 4 пунктов из списка должен также стать зеленым, так как его значение также равно b.
#So, after substitution it should look like APIcommand -points 1,2,3,4 -color green ..... so on and so forth
Обратите внимание, что это не всегда будет b, это просто происходит в этом случае.
Нужно решение как можно скорее. Заранее спасибо.
Я пытался использовать цикл Еогеаспа внутри для цикла, а затем использовать -цвет [LINDEX $ color ($ newlist) $ i], и именно поэтому это дало мне ошибку. но сначала используя имя массива, а затем индекс keylist решил мою проблему. Еще раз спасибо !! (Это именно то, что я искал) – user2643899