Author: larry
Date: Thu Feb 22 16:32:25 2007
New Revision: 13703
Modified:
doc/trunk/design/syn/S06.pod
Log:
Clarify that a named argument may name either the label or the variable name.
Modified: doc/trunk/design/syn/S06.pod
==============================================================================
--- doc/trunk/design/syn/S06.pod (original)
+++ doc/trunk/design/syn/S06.pod Thu Feb 22 16:32:25 2007
@@ -13,9 +13,9 @@
Maintainer: Larry Wall <[EMAIL PROTECTED]>
Date: 21 Mar 2003
- Last Modified: 16 Feb 2007
+ Last Modified: 22 Feb 2007
Number: 6
- Version: 71
+ Version: 72
This document summarizes Apocalypse 6, which covers subroutines and the
@@ -519,6 +519,12 @@
multi sub handle_event ($window, $event; $mode) {...}
multi method set_name ($self: $name; $nick) {...}
+A double semicolon terminates the longest possible longname; parameters
+after this are never considered for multiple dispatch (except of course
+that they can still "veto" if their number or types mismatch). (Note,
+the single semicolon form is still considered conjectural, though the
+double semicolon is fairly certain.)
+
If the parameter list for a C<multi> contains no semicolon to delimit
the list of important parameters, then all positional parameters are
considered important. If it's a C<multi method> or C<multi submethod>,
@@ -615,6 +621,11 @@
so that you can use more descriptive internal parameter names without
imposing inconveniently long external labels on named arguments.
+If a named argument does not match any label, it is matched against
+the variable names as a fallback. This allows you to give both a
+short and a long name:
+
+ sub globalize (:g($global)) {...}
Arguments that correspond to named parameters are evaluated in scalar
context. They can only be passed by name, so it doesn't matter what