Posted to tcl by apn at Tue Oct 08 06:28:49 GMT 2024view raw

  1. # Extremely simplistic to illustrate. Does not deal with namespaces, will not handle
  2. # mocking commands used within the redefinition (lindex, puts etc.)
  3. proc mock {cmd} {
  4. rename $cmd ${cmd}_original
  5. proc $cmd args {
  6. set me [lindex [info level 0] 0]
  7. incr ::counts($me)
  8. puts Trace:[info level 0]
  9. tailcall {*}${me}_original {*}$args
  10. }
  11. }
  12. % mock format
  13. % format %s%d foo 42
  14. Trace:format %s%d foo 42
  15. foo42
  16. % format %s%d foo 43
  17. Trace:format %s%d foo 43
  18. foo43
  19. % set counts(format)
  20. 2
  21. % format %s%d foo 44
  22. Trace:format %s%d foo 44
  23. foo44
  24. % set counts(format)
  25. 3

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