On 09/14/2018 07:48 PM, Brad Gilbert wrote:
On Fri, Sep 14, 2018 at 6:03 PM ToddAndMargo <toddandma...@zoho.com> wrote:

On Fri, Sep 14, 2018 at 6:47 PM ToddAndMargo <toddandma...@zoho.com
<mailto:toddandma...@zoho.com>> wrote:

     Hi All,

     Can a method be given multiple inputs?

           ( $a, $b ).foo

     and how would the docs write it?

           method foo(Any:D Any:D:  -->Bool)

     Is there a comma or a space between the two "any"'s?

     Many thanks,
     -T




On 09/14/2018 03:52 PM, Brandon Allbery wrote:
In that case, you're not giving it two items; you are giving it a single
List that happens to have two items within it. A method has one
invocant. If you are invoking method foo on that, its invocant is a List.

  > my $a; my $b; say ($a, $b).^name
List

Makes sense.  () turns it into a "List" so it
can be passed as one.

Thank you!

No () doesn't turn it into a list.

The comma turns it into a list

The () just act as a way to textually encapsulate the list

     (42).^name;  # Int
     (42, ).^name; # List

This is a very important distinction.

     [[[42]]].perl(); # [42]
     [[[42],],].perl(); # [[[42],],]

     (((42))).perl(); # 42
     (((42,),),).perl(); # (((42,),),)


Thank you!

--
~~~~~~~~~~~~~~~~~~~~~~~~
Yesterday it worked.
Today it is not working.
Windows is like that.
~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to