Author: autrijus Date: Mon Apr 17 20:39:37 2006 New Revision: 8765 Modified: doc/trunk/design/syn/S06.pod Log: * S06: Clarified "multidimensional Capture" part by stating that only the positional/named parts gets into *@;x, and the invocant is exempt from it. This allows for method calls that takes multiple slices, such as $moose.zip(1;2;3) in addition to zip(1;2;3). Modified: doc/trunk/design/syn/S06.pod ============================================================================== --- doc/trunk/design/syn/S06.pod (original) +++ doc/trunk/design/syn/S06.pod Mon Apr 17 20:39:37 2006 @@ -13,9 +13,9 @@ Maintainer: Larry Wall <larry@wall.org> Date: 21 Mar 2003 - Last Modified: 15 Apr 2006 + Last Modified: 18 Apr 2006 Number: 6 - Version: 24 + Version: 25 This document summarizes Apocalypse 6, which covers subroutines and the @@ -744,11 +744,11 @@ =head2 Multidimensional argument list binding -Some functions take more than one C<Capture> as their argument list, that they -wish not to be flattened into one list. For instance, C<zip()> wants to -iterate several lists in parallel, while array and hash subscripts want to -process multidimensional slices. The set of underlying argument list (Capture) -objects may be bound to a single array parameter declared with a C<;> twigil: +Some functions take more than one lists of positional and/or named arguments, +that they wish not to be flattened into one list. For instance, C<zip()> wants +to iterate several lists in parallel, while array and hash subscripts want to +process multidimensional slices. The set of underlying argument lists may be +bound to a single array parameter declared with a C<;> twigil: sub foo (*@;slices) { ... } @@ -768,6 +768,11 @@ sub foo (*@;slices --> Num) { ... } +The invocant does not participate in multi-dimensional argument lists, +so C<self> is not present in any of the C<@;slices> below: + + method foo (*@;slices) { ... } + =head2 Zero-dimensional argument list If you call a function without parens and supply no arguments, the