Diff
Not logged in

Differences From Artifact [209fcfbc2f]:

To Artifact [6e64ff5396]:


34
35
36
37
38
39
40









41
42
43
44
45
46
47
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56







+
+
+
+
+
+
+
+
+







then it is the name of the argument; if there are two fields, then
the first is the argument name and the second is its default value.
Arguments with default values that are followed by non-defaulted
arguments become required arguments; enough actual arguments must be
supplied to allow all arguments up to and including the last required
formal argument.
.PP
If the \fIargs\fR is the last formal argument, and it is given a default
value, that default value is interpreted to be the specification for
how named parameters beyond the last formal argument will be interpreted
(an argspec). An argspec is a dict where every key calls out a local variable
to be defined. The values are a dict which can contain one or more of the
following options: default (a default value), mandatory (boolean, when false
an error will not be thrown if the parameter is missing), and aliases (a
list of alternative names for this parameter.)
.PP
When \fIname\fR is invoked a local variable
will be created for each of the formal arguments to the procedure; its
value will be the value of corresponding argument in the invoking command
or the argument's default value.
Actual arguments are assigned to formal arguments strictly in order.
Arguments with default values need not be
specified in a procedure invocation.  However, there must be enough
57
58
59
60
61
62
63








64
65
66
67
68
69
70
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87







+
+
+
+
+
+
+
+







variable numbers of arguments.  If the last formal argument has the name
.QW \fBargs\fR ,
then a call to the procedure may contain more actual arguments
than the procedure has formal arguments.  In this case, all of the actual arguments
starting at the one that would be assigned to \fBargs\fR are combined into
a list (as if the \fBlist\fR command had been used); this combined value
is assigned to the local variable \fBargs\fR.
.PP
When an argspec is defined elements beyond the last formal
argument are a dict. A variable with the name of every field will be
fill with the contents of every value. An argspec can provide a default value
for missing named parameters, or state that parameter is non-mandatory.
Non-mandatory fields will not be mapped as local variables. The value of
\fIargs\fR is still a verbatim record of elements beyond the final formal
argument.
.PP
When \fIbody\fR is being executed, variable names normally refer to
local variables, which are created automatically when referenced and
deleted when the procedure returns.  One local variable is automatically
created for each of the procedure's arguments.
Other variables can only be accessed by invoking one of the \fBglobal\fR,
\fBvariable\fR, \fBupvar\fR or \fBnamespace upvar\fR commands.