On 09/14/2018 07:52 PM, Curt Tilmes wrote:
On Fri, Sep 14, 2018 at 10:42 PM ToddAndMargo <toddandma...@zoho.com
<mailto:toddandma...@zoho.com>> wrote:
When I said "yet", I presumed the a variable can be
redefined at will:
$ p6 'my $x; say $x.perl;
$x="abc"; say $x.perl;
$x=Nil; say $x.perl;'
Any
"abc"
Any
And that the receiving method only cares what you feed it
at the time it is called.
Your example doesn't limit the type. If you limit the type, you'll get
an error
by assigning it something the type doesn't allow.
my Int $x;
$x = "abc"; # error can't put a string in an Int
my Int:U $x;
$x = 42; # error can't put a definite value in an Int:U
my Int:D $x = 42;
$x = Nil; # error, can't undefine.
You're only allowed to put in things that fit. If an argument to a
routine is limited, you can only pass in things that fit.
Curt
Got it! Thank you!
$ p6 'my Int:D $x = 42; $x = Nil;'
Type check failed in assignment to $x; expected type Int:D cannot be
itself (perhaps Nil was assigned to a :D which had no default?)
in block <unit> at -e line 1
$ p6 'my Int:U $x = 42;'
Type check failed in assignment to $x; expected Int:U but got Int (42)
in block <unit> at -e line 1
-T
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When we ask for advice, we are usually looking for an accomplice.
-- Charles Varlet de La Grange
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~