On Fri, 14 Sep 2018, 11:22 Todd Chester, <toddandma...@zoho.com <mailto:toddandma...@zoho.com>> wrote:

    Hi All,

    I adore the "kv" method:

    $ p6 'for "abc\n23\n4.56".lines.kv -> $i, $j { say "$i  $j" };'
    0  abc
    1  23
    2  4.56

    So, I decided to go and look at:
    https://docs.perl6.org/routine/kv

    multi method kv(Any:U:  -->List)
    multi method kv(Any:D:  -->List)


    Okay, here is what I see:

    "method"  is .foo style of a routine

    "Any:U:" and "Any:D:" are what goes in front of .foo
    and it can be of type "Any".

    https://docs.perl6.org/type/Any

           ":D" mean constrained, meaning it much have something

           What is ":U"?

           Whatever ":U", how can it be both?

    The second ":" is the delimiter for what goes in front of the .foo,
    meaning it has finished its declaration of what that in front is.
    Kind of like a comma.

    "-->List" mean something is returned of type "List"
    https://docs.perl6.org/type/List

           0  abc
           1  23
           2  4.56


    How have I done so far?


    And is there a list somewhere of the meanings of ":U" and ":D"
    and such so the next time I see one that I do not recognize,
    I can look it up?

    Many thanks,
    -T



On 09/14/2018 03:28 AM, Simon Proctor wrote:
:D means a defined value. So it's when you have an instance. :U is undefined so it's when you call kv as a classethod.

Pair.kv would be :U.
(A => "b").kv would be :D



Hi Simion,

I am not following.  What do you mean by "undefined"?

I can't make head or tails out of "Pair"
https://docs.perl6.org/type/Pair

I thought ":D" meant "constrained"?

Yours in confusion ,
-T

Reply via email to