What is the canonical way to pass a list to a Tcl procedure?
I'd really like it if I could get it so that a list is automatically expanded into a variable number of arguments.
So that something like:
set a {b c}
myprocedure option1 option2 $a
and
myprocedure option1 option2 b c
are equivalent.
I am sure I saw this before, but I can't find it anywhere online. Any help (and code) to make both cases equivalent would be appreciated.
Is this considered a standard Tcl convention. Or am I even barking up the wrong tree?
It depends on the version of Tcl you're using, but: For 8.5:
set mylist {a b c}
myprocedure option1 option2 {*}$mylist
For 8.4 and below:
set mylist {a b c}
eval myprocedure option1 option2 $mylist
# or, if option1 and 2 are variables
eval myprocedure [list $option1] [list $option2] $mylist
# or, as Bryan prefers
eval myprocedure \$option1 \$option2 $mylist