Version 9 of namespace eval

Updated 2014-08-15 17:19:10 by pooryorick

namespace eval, evaluates a script in a given namespace.

See Also

namespace
eval

Synopsis

namespace eval namespace arg ?arg ...?

Description

args are concatenated together in the same fashion as eval, with with a space between each one, and the result is evaluated in the namespace called namespace. namespace and any namespaces that qualify it are automatically created as necessary.

Unlike eval, namespace eval operates at new level, such that uplevel 1 accesses the level from which namespace eval was called. In spite of this, return within namespace eval script operates as if it were uplevel return, i.e., it causes the caller of namespace eval to return. It would probably be more useful if return within a namespace eval script behaved the way it does within source ... script, causing only namespace eval itself to return.

For better performance, namespace eval ... is usually byte-compiled when it is given one argument which is a literal string:

proc main {
    namespace eval [info cmdcount] {
        set msg {this script is eligible to be byte-compiled}
        return $msg
    }
}