Posted to tcl by mjanssen at Fri Nov 21 18:37:25 GMT 2008view raw

  1. proc test_args {procname args variadic_description vars} {
  2. # observe this proc will fail to work if #288 passes
  3. foreach var $vars {
  4. upvar $var $var
  5. }
  6. if {[llength $args] < [llength $vars]} {
  7. return -code error -level 2 "wrong #args: should be \"$procname ?$variadic_description? $vars"
  8. } else {
  9. return [lassign $args {*}$vars]
  10. }
  11. }
  12.  
  13. proc test {args} {
  14. set args [test_args test $args "options" {x y}]
  15. puts x:$x
  16. puts y:$y
  17. puts args:$args
  18. }
  19.  
  20. (mjanssen) 15 % test
  21. wrong #args: should be "test ?options? x y
  22. (mjanssen) 16 % test 1
  23. wrong #args: should be "test ?options? x y
  24. (mjanssen) 17 % test 1 2
  25. x:1
  26. y:2
  27. args:
  28. (mjanssen) 18 % test 1 2 3 4
  29. x:1
  30. y:2
  31. args:3 4