Re: I need help testing for Nil
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
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
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
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 >