Использование proc для дублирования параметров в Tcl - PullRequest
1 голос
/ 18 октября 2011

Я хочу создать несколько объектов с одинаковыми параметрами, поэтому я попытался сохранить их в процедуре, которая их возвращает. Но интерпретатор оценивает возвращаемый результат как один параметр, а не несколько. Мой процесс:

proc element_param {} {
    return "-filled 1\
        -visible 1\
        -linewidth 1\
        -linecolor yellow\
        -fillcolor yellow\
        -relief roundraised\
        -linewidth 2"
}

и я использую его с:

$this/zinc add rectangle 1 [list "100" "100" "200" "200"] [element_param]

Как мне превратить их в несколько разных параметров?

1 Ответ

7 голосов
/ 18 октября 2011

С tcl 8.5 и выше используйте оператор {*}, чтобы развернуть список параметров:

$this/zinc add rectangle 1 $coords {*}[element_param]

с предыдущими версиями вы можете расширить списки, используя eval:

eval [linsert [element_param] 0 $this/zinc add rectangle 1 $coords]

что эквивалентно.

...