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-us...@perl.org> wrote:

> >> On Tue, May 26, 2020 at 4:24 PM ToddAndMargo via perl6-users
> >> <perl6-us...@perl.org <mailto:perl6-us...@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 <unit> at -e line 1
> >>     Use of Nil in string context
> >>         in block <unit> 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
>

Reply via email to