Posted to tcl by mjanssen at Fri Nov 21 18:37:25 GMT 2008view pretty
proc test_args {procname args variadic_description vars} { # observe this proc will fail to work if #288 passes foreach var $vars { upvar $var $var } if {[llength $args] < [llength $vars]} { return -code error -level 2 "wrong #args: should be \"$procname ?$variadic_description? $vars" } else { return [lassign $args {*}$vars] } } proc test {args} { set args [test_args test $args "options" {x y}] puts x:$x puts y:$y puts args:$args } (mjanssen) 15 % test wrong #args: should be "test ?options? x y (mjanssen) 16 % test 1 wrong #args: should be "test ?options? x y (mjanssen) 17 % test 1 2 x:1 y:2 args: (mjanssen) 18 % test 1 2 3 4 x:1 y:2 args:3 4