Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: Perl 6, defining a hash with interpolated string

by Mr_Micawber (Beadle)
on Aug 04, 2010 at 19:12 UTC ( #852950=note: print w/ replies, xml ) Need Help??


in reply to Re: Perl 6, defining a hash with interpolated string
in thread Perl 6, defining a hash with interpolated string

I think I was looking for the interpolating analog of this model for specifying a literal hash pair:

%kv = :LiteralKey<LiteralValue>


Comment on Re^2: Perl 6, defining a hash with interpolated string
Download Code
Re^3: Perl 6, defining a hash with interpolated string
by molecules (Monk) on Aug 04, 2010 at 20:32 UTC
    The last two of the following examples give you interpolation, but it is more of the "normal" interpolation you would expect in Perl.
    use v6; my %kv1 = :LiteralKey<LiteralValue>; say :%kv1.perl; my %kv2 = <LiteralKey>,<LiteralValue>; say :%kv2.perl; my $var3 = 'Literal'; my %kv3 = "{$var3}key",'LiteralValue'; say :%kv3.perl; my $var4 = 'LiteralKey'; my %kv4 = "$var4",'LiteralValue'; say :%kv4.perl;
    gives you
    "kv1" => {"LiteralKey" => "LiteralValue"} "kv2" => {"LiteralKey" => "LiteralValue"} "kv3" => {"Literalkey" => "LiteralValue"} "kv4" => {"LiteralKey" => "LiteralValue"}

      I noticed playing with this code that the output of .perl differs depending on if the colon is in front of the variable:

      say :%kv4.perl; #"kv1" => {"LiteralKey" => "LiteralValue"} say %kv4.perl; #{"LiteralKey" => "LiteralValue"}

      the colon seems to be plucking the Hash's name and creating a Pair with it.

        Yes that is correct.
        my $name='Larry'; my $pair = :$name; say $pair.perl;
        Outputs:
        "name" => "Larry"


        UPDATE:
        This is especially useful for named parameters in subroutine declarations.

        For example:
        use v6; foo( B => 'there',A => 'howdy'); sub foo(Str :$A, Str :$B){ say "Named parameter A is '$A'"; say "Named parameter B is '$B'"; }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://852950]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2014-12-27 19:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (177 votes), past polls