Posted to tcl by mjanssen at Sat Oct 31 00:10:12 GMT 2009view raw

  1. proc vector {vector {method {}} args} {
  2. if {$method eq {} } {
  3. return $vector
  4. }
  5. switch $method {
  6. inner {
  7. set res 0
  8. set other [lindex $args 0]
  9. foreach e1 $vector e2 [$other] {
  10. set res [expr {$res+$e1*$e2}]
  11. }
  12. return $res
  13. }
  14. @ {
  15. return [lindex $vector [lindex $args 0]]
  16. }
  17. }
  18. }
  19.  
  20. set a {vector {1 2 3}}
  21. set b {vector {1 2 3}}
  22. puts [$a inner $b]