Posted to tcl by stu at Mon Jan 10 13:45:42 GMT 2022view raw

  1. $ cat nsy.tcl
  2. namespace eval main {
  3. namespace eval module_a {
  4. proc openModule {args} { return open:$args }
  5. proc closeModule {args} { return close:$args }
  6. proc module_a {args} {
  7. namespace path [namespace parent]
  8. set me [namespace tail [lindex [info level 0] 0]]
  9. namespace ensemble create -prefixes no -command $me \
  10. -map [dict create open openModule close closeModule]
  11. rename $me _$me
  12. # Module-specific initialization begin
  13. # put code here
  14. # Module-specific initialization end
  15. tailcall $me {*}$args
  16. }
  17. namespace export module_a
  18. }
  19. namespace import module_a::*
  20. }
  21. $ tclsh
  22. % source nsy.tcl
  23. % namespace eval main { list [module_a open a b c] [module_a close 1 2 3] [module_a open x y z] }
  24. {open:a b c} {close:1 2 3} {open:x y z}
  25. $ tclsh
  26. % source nsy.tcl
  27. % list [main::module_a open a b c] [main::module_a close 1 2 3] [main::module_a open x y z]
  28. {open:a b c} {close:1 2 3} {open:x y z}
  29. $ tclsh
  30. % source nsy.tcl
  31. % main::module_a z
  32. unknown subcommand "z": must be close, or open

AltStyle によって変換されたページ (->オリジナル) /