Re: I need help testing for Nil

2020-05-26 Thread ToddAndMargo via perl6-users

On 2020-05-26 16:29, Brad Gilbert wrote:

There are various equality operators.

「==」 Tests for numeric equality
「eq」 Tests for string equality
「===」 Tests for value identity
「=:=」 Tests for pointer equality (Note that it looks a bit like 「:=」)
「eqv」 Tests for structure equivalence.

The 「==」 and 「eq」 operators are special because they force their values 
to be numbers or strings before they do anything else.


Thank you!  Wrote it down.


Re: I need help testing for Nil

2020-05-26 Thread Brad Gilbert
There are various equality operators.

「==」 Tests for numeric equality
「eq」 Tests for string equality
「===」 Tests for value identity
「=:=」 Tests for pointer equality (Note that it looks a bit like 「:=」)
「eqv」 Tests for structure equivalence.

The 「==」 and 「eq」 operators are special because they force their values to
be numbers or strings before they do anything else.

There are similarly a variety of comparison operators.

On Tue, May 26, 2020 at 5:06 PM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> >> On Tue, May 26, 2020 at 4:24 PM ToddAndMargo via perl6-users
> >> mailto:perl6-users@perl.org>> wrote:
> >>
> >> Hi All,
> >>
> >> How do I turn this:
> >>
> >> $ raku -e 'my $x="abc"; say $x.index( "q" );'
> >> Nil
> >>
> >> into a test?
> >>
> >> $ raku -e 'my $x="abc"; if $x.index( "q" ) eq Nil {say
> "Nil"}else{say
> >> "Exists";}'
> >> Use of Nil in string context
> >> in block  at -e line 1
> >> Use of Nil in string context
> >> in block  at -e line 1
> >> Nil
> >>
> >>
> >> Many thanks,
> >> -T
> >>
>
> On 2020-05-26 15:00, Brad Gilbert wrote:
> > Generally you don't need to test for 「Nil」.
> > You can just test for defined-ness.
>
> True enough
>
> >
> >  $ raku -e 'my $x="abc"; with $x.index( "q" ) {say "Exists"} else
> > {say "Nil";}'
> >
> > Also 「Nil」 is not a 「Str」, so why would you use 「eq」?
>
> Because == did not work
>
>
> >  $ raku -e 'Nil.Str'
> >  Use of Nil in string context
> >
> > If you really need to check specifically for 「Nil」 (which you probably
> > don't), then you can use 「===」.
> >
> >  for Str, Int, Nil {
> >  say 'Nil' if $_ === Nil;
> >  }
> >
> > The 「//」 operator can also be useful to deal with undefined values such
> > as 「Nil」.
> >
> >  my $x = 'abc';
> >  say $x.index('q') // 'cannot find the index of 「q」';
> >
> >
>
> Hi Brad,
>
> Did not know about the triple =
>
> Thank you!
>
> -T
>
>
> $ raku -e 'my $x="abc"; if $x.index( "q" ) === Nil {say "Nil"}else{say
> "Exists";}'
> Nil
>
> $ raku -e 'my $x="abc"; if $x.index( "a" ) === Nil {say "Nil"}else{say
> "Exists";}'
> Exists
>
> And I found buried in my Nil notes that `=:=` works too
>
> $ raku -e 'my $x="abc"; if $x.index( "q" ) =:= Nil {say "Nil"}else{say
> "Exists";}'
> Nil
>
> $ raku -e 'my $x="abc"; if $x.index( "b" ) =:= Nil {say "Nil"}else{say
> "Exists";}'
> Exists
>


Re: I need help testing for Nil

2020-05-26 Thread ToddAndMargo via perl6-users
On Tue, May 26, 2020 at 4:24 PM ToddAndMargo via perl6-users 
mailto:perl6-users@perl.org>> wrote:


Hi All,

How do I turn this:

$ raku -e 'my $x="abc"; say $x.index( "q" );'
Nil

into a test?

$ raku -e 'my $x="abc"; if $x.index( "q" ) eq Nil {say "Nil"}else{say
"Exists";}'
Use of Nil in string context
in block  at -e line 1
Use of Nil in string context
in block  at -e line 1
Nil


Many thanks,
-T



On 2020-05-26 15:00, Brad Gilbert wrote:

Generally you don't need to test for 「Nil」.
You can just test for defined-ness.


True enough



     $ raku -e 'my $x="abc"; with $x.index( "q" ) {say "Exists"} else 
{say "Nil";}'


Also 「Nil」 is not a 「Str」, so why would you use 「eq」?


Because == did not work



     $ raku -e 'Nil.Str'
     Use of Nil in string context

If you really need to check specifically for 「Nil」 (which you probably 
don't), then you can use 「===」.


     for Str, Int, Nil {
         say 'Nil' if $_ === Nil;
     }

The 「//」 operator can also be useful to deal with undefined values such 
as 「Nil」.


     my $x = 'abc';
     say $x.index('q') // 'cannot find the index of 「q」';




Hi Brad,

Did not know about the triple =

Thank you!

-T


$ raku -e 'my $x="abc"; if $x.index( "q" ) === Nil {say "Nil"}else{say 
"Exists";}'

Nil

$ raku -e 'my $x="abc"; if $x.index( "a" ) === Nil {say "Nil"}else{say 
"Exists";}'

Exists

And I found buried in my Nil notes that `=:=` works too

$ raku -e 'my $x="abc"; if $x.index( "q" ) =:= Nil {say "Nil"}else{say 
"Exists";}'

Nil

$ raku -e 'my $x="abc"; if $x.index( "b" ) =:= Nil {say "Nil"}else{say 
"Exists";}'

Exists


Re: I need help testing for Nil

2020-05-26 Thread Brad Gilbert
Generally you don't need to test for 「Nil」.
You can just test for defined-ness.

$ raku -e 'my $x="abc"; with $x.index( "q" ) {say "Exists"} else {say
"Nil";}'

Also 「Nil」 is not a 「Str」, so why would you use 「eq」?

$ raku -e 'Nil.Str'
Use of Nil in string context

If you really need to check specifically for 「Nil」 (which you probably
don't), then you can use 「===」.

for Str, Int, Nil {
say 'Nil' if $_ === Nil;
}

The 「//」 operator can also be useful to deal with undefined values such as
「Nil」.

my $x = 'abc';
say $x.index('q') // 'cannot find the index of 「q」';


On Tue, May 26, 2020 at 4:24 PM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

> Hi All,
>
> How do I turn this:
>
> $ raku -e 'my $x="abc"; say $x.index( "q" );'
> Nil
>
> into a test?
>
> $ raku -e 'my $x="abc"; if $x.index( "q" ) eq Nil {say "Nil"}else{say
> "Exists";}'
> Use of Nil in string context
>in block  at -e line 1
> Use of Nil in string context
>in block  at -e line 1
> Nil
>
>
> Many thanks,
> -T
>