Namespace {R}←{X}⎕NS Y
If specified, X
must be a simple character scalar or vector identifying the name of a namespace.
Y
is either a character array which represents a list of names of objects to be copied into the namespace, or a ref to a namespace, or an array produced by the ⎕OR
of a namespace.
Case 1
In the first case, Y
must be a simple character scalar, vector, matrix or a nested vector of character vectors identifying zero or more workspace objects to be copied into the namespace X
. The identifiers in X
and Y
may be simple names or compound names separated by '.'
and including the names of the special namespaces '#'
, '##'
and '⎕SE'
.
The namespace X
is created if it doesn't already exist. If the name is already in use for an object other than a namespace, APL issues a DOMAIN ERROR
.
If X
is omitted, an unnamed namespace is created.
The objects identified in the list Y
are copied into the namespace X
.
If X
is specified, the result R
is the full name (starting with #.
or ⎕SE.
) of the namespace X
. If X
is omitted, the result R
is a namespace reference, or ref, to an unnamed namespace.
Examples
+'X'⎕NS'' ⍝ Create namespace X.
#.X
⊢'X'⎕NS'VEC' 'UTIL.DISP'⍝ Copy VEC and DISP to X.
#.X
)CS X ⍝ Change to namespace X.
#.X
⊢'Y'⎕NS'#.MAT' '##.VEC' ⍝ Create #.X.Y © in
#.X.Y
⊢'#.UTIL'⎕NS'Y.MAT' ⍝ Copy MAT from Y to UTIL #.UTIL.
#.UTIL
⊢'#'⎕NS'Y' ⍝ Copy namespace Y to root.
#
⊢''⎕NS'#.MAT' ⍝ Copy MAT to current space.
#.X
⊢''⎕NS'' ⍝ Display current space.
#.X
⊢'Z'⎕NS ⎕OR'Y' ⍝ Create nspace from ⎕OR.
#.X.Z
NONAME←⎕NS '' ⍝ Create unnamed nspace
NONAME
#.[Namespace]
DATA←⎕NS¨3⍴⊂'' ⍝ Create 3-element vector of
⍝ distinct unnamed nspaces
DATA
#.[Namespace] #.[Namespace] #.[Namespace]
Case 2
The second case is where Y
is a ref to a namespace or the ⎕OR
of a namespace.
If Y
is a ref to or a ⎕OR
of a GUI object, X
must be a valid parent for the GUI object represented by Y
, or the operation will fail with a DOMAIN ERROR
.
Otherwise, the result of the operation depends upon the existence of X
.
- If
X
does not currently exist (name class is 0),X
is created as a complete copy (clone) of the original namespace represented byY
. IfY
is a ref to or the⎕OR
of a GUI object or of a namespace containing GUI objects, the corresponding GUI components ofY
will be instantiated inX
. - If
X
is the name of an existing namespace (name class 9), the contents ofY
, including any GUI components, are merged intoX
. Any items inX
with corresponding names inY
(names with the same path in bothY
andX
) will be replaced by the names inY
, unless they have a conflicting name class in which case the existing items inX
will remain unchanged. However, all GUI spaces inX
will be stripped of their GUI components prior to the merge operation.