The following code example illustrates how different types of namespace path addressing effects what is being accessed (Variables) or executed (Procedures).
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