In the following the 「:」 makes it so you don't need parenthesis

    (…).sort: …

    (…).sort(…)

The reason there needs to be a space is so it isn't confused for an adverb.

「*.Version」 is a method call turned into a lambda.
Basically it creates a lambda where the only thing it does is call a method
named 「Version」

A 「*」 where a term is expected is an instance of Whatever.

If you use that with an operator it becomes a WhateverCode lambda.

    sub say-the-type ( $_ ) {
      say .^name
    }

    say-the-type  *;  # Whatever

    say -the-type *.method; # WhateverCode


On Mon, May 25, 2020 at 1:24 PM ToddAndMargo via perl6-users <
perl6-us...@perl.org> wrote:

> Hi All,
>
> Looking at the following:
>
>  > my @things = <a5.1 a2.3 b1a23 a1b33 a1 a2rc2>.sort: *.Version; dd
> @things; for @things {say $_;}
>
> Array @things = ["a1b33", "a1", "a2rc2", "a2.3", "a5.1", "b1a23"]
>
> a1b33
> a1
> a2rc2
> a2.3
> a5.1
> b1a23
>
> Other than not quite getting the alpha, beta, and
> release candidate thing down, I do not understand:
>
> .sort: *.Version
>
> 1) What does the `:` do?
>
> 2) Why the space?
>
> 3) What does the `*` do?
>
> 4) Is the dot before Version mean something other
> than .Version being a method?
>
> Yours in confusion,
> -T
>

Reply via email to