On Sun, Sep 16, 2018 at 9:02 PM ToddAndMargo <toddandma...@zoho.com <mailto:toddandma...@zoho.com>> wrote:

    On 09/16/2018 05:58 PM, Curt Tilmes wrote:
     > Read this:
     >
    
https://perl6advent.wordpress.com/2017/12/02/perl-6-sigils-variables-and-containers/
     >
     > Then go back and read it again.  It took me several times, and
    I'm still
     > not sure I get it all :)

    I am spacing on the difference between

          my $foo  = 42;     and
          my $foo := 42;

    To add insult to injury, I come from Modula2, where
    `:=` is `=` in Perl.

    -T


On 9/16/18 9:06 PM, Brandon Allbery wrote:
If you say "my $foo = 42", you are saying that $x is a box, and you are putting 42 into it. You can put something else into that box later.

If you say "my $foo := 42", you are saying that $x is 42 itself, not a box containing 42. You can think of it as a constant of sorts. Because it's not a box, you can't change what's in the nonexistent box later.

From here on it gets trickier, because there are things that can use the box instead of what the box contains, notably Hash elements, and which can then be changed by changing what's in the box directly instead of by changing the Hash element.


Does `:=` have an official name?

So, kind of like a constant you that can sometimes change.

What would be the use of such?


$ p6 'constant t=1.414; dd t;'
1.414

$ p6 'my $t := 1.414; dd $t;'
1.414

$ p6 'my $t := 1.414; $t += 1; dd $t;'
Cannot assign to an immutable value
  in block <unit> at -e line 1

$ p6 'my $t := 1.414; $t := 4.14; dd $t;'
4.14

$ p6 'my $t := 1.414; say $t + 9;'
10.414

Reply via email to