develooper Front page | perl.perl6.language | Postings from August 2006

[svn:perl6-synopsis] r10855 - doc/trunk/design/syn

From:
audreyt
Date:
August 11, 2006 20:28
Subject:
[svn:perl6-synopsis] r10855 - doc/trunk/design/syn
Message ID:
20060812032805.2CB3FCB9BB@x12.develooper.com
Author: audreyt
Date: Fri Aug 11 20:28:03 2006
New Revision: 10855

Modified:
   doc/trunk/design/syn/S06.pod

Log:
* S06: dconway++ suggested that we still provide convenience methods
  on Signature level, to reduce line noise in common "want" operations.

* Also remove a stray paragraph miscommitted with the previous commit.


Modified: doc/trunk/design/syn/S06.pod
==============================================================================
--- doc/trunk/design/syn/S06.pod	(original)
+++ doc/trunk/design/syn/S06.pod	Fri Aug 11 20:28:03 2006
@@ -13,9 +13,9 @@
 
   Maintainer: Larry Wall <larry@wall.org>
   Date: 21 Mar 2003
-  Last Modified: 11 Aug 2006
+  Last Modified: 12 Aug 2006
   Number: 6
-  Version: 47
+  Version: 48
 
 
 This document summarizes Apocalypse 6, which covers subroutines and the
@@ -1766,10 +1766,6 @@
 Specifies that the parameter cannot be modified (e.g. assigned to,
 incremented). It is the default for parameters.
 
-$x = 5;
-
-sub f ($x) {}
-
 =item C<is rw>
 
 Specifies that the parameter can be modified (assigned to, incremented,
@@ -1902,16 +1898,24 @@
         ...
     }
 
-You can also use the postfix signature syntax to test for compatibility:
+Or use its shorthand methods to reduce line noise:
+
+    if    want.item      {...}  # called in non-lvalue scalar context
+    elsif want.list      {...}  # called in list context
+    elsif want.void      {...}  # called in void context
+    elsif want.rw        {...}  # expected to return an lvalue
+
+The C<.arity> and C<.count> methods also work here:
 
-    if    want:($)       {...}  # called in scalar context
-    elsif want:(*@)      {...}  # called in list context
-    elsif want:($ is rw) {...}  # expected to return an lvalue
-    elsif want:($,$)     {...}  # expected to return two values
+    if want.arity > 2    {...}  # must return more than two values
+    if want.count > 2    {...}  # can return more than two values
 
-The C<.arity> method also works here:
+Their difference is that C<.arity> considers only mandatory parts,
+while C<.count> considers also optional ones, including C<*$>:
 
-    if want.arity > 2    {...}  # expected to return more than two values
+    ($x, $y) = f();     # Within &f, want === :(*$?, *$?, *@)
+                        #            want.arity === 0
+                        #            want.count === 2
 
 =head2 The C<leave> function
 



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About