Version 2 of Namespace resolution of Variables & Procedures

Updated 2003-01-13 21:41:04

The following code illustrates how the use of different name space path forms effect what is being accessed (Variables) or executed (Procedures).

Tom Krehbiel


 set Variable "::Variable"

 proc TestProc {} {
     puts "::proc"
 }

 namespace eval Namespace {

     namespace eval Namespace {
         variable Variable "::Namespace::Namespace Variable"
         proc TestProc {} {
             puts "::Namespace::Namespace proc"
         }
     }

     variable Variable "::Namespace Variable"

     proc TestProc {} {
         puts "::Namespace proc"
     }

     proc test0 {} {
         puts "$::Variable"
     }
     proc test1 {} {
         puts "$::Namespace::Variable"
     }
     proc test2 {} {
         puts "$Namespace::Variable"
     }
     proc test3 {} {
         ::TestProc
     }
     proc test4 {} {
         TestProc
     }
     proc test5 {} {
         Namespace::TestProc
     }

 }

 % Namespace::test0
 ::Variable

 % Namespace::test1
 ::Namespace Variable

 % Namespace::test2
 ::Namespace::Namespace Variable

 % Namespace::test3
 ::proc

 % Namespace::test4
 ::Namespace proc

 % Namespace::test5
 ::Namespace::Namespace proc