Version 3 of Toggling a Boolean Variable

Updated 2002-11-06 14:28:18

proc toggle {v} {

  uplevel [concat set $v \[expr \[set $v\] ^ 1\]]
 }

 % set state 0
 0
 % toggle state
 1
 % toggle state
 0

RS has this alternative:

 proc toggle varName {
     upvar 1 $varName var
     set var [expr {!$var}]
 }

escargo has this alternative:

 proc toggle varName {
     upvar 1 $varName var
     set var [expr {1 - $var}]
 }

This is a clearly inferior alternative, but I wanted to include it for completeness.


Category Example