in reply to Re^5: Smartmatch alternatives
in thread Smartmatch alternatives
hmm maybe simpler than we thought!
DB<25> sub first (&@) { my $code=shift; grep {return $_ if &$code} @ +_ } DB<26> first { $_ >5 } 1..10 => 6 DB<27> first { $_ >10 } 1..10 DB<28> sub any (&@) { my $code=shift; grep {return 1 if &$code} @_ ; + ()} DB<29> any { $_ >10 } 1..10 => "" DB<30> any { $_ >5 } 1..10 => 1
Can you spot problems?
update
variation of first for finding position
DB<40> sub position (&@) { my $code=shift; my $idx=-1; grep {++$idx; + return $idx if &$code} @_ ; ()} DB<41> position { !$_ } 1..10,undef,11..20 => 10
update
changed "" to () for false.
update
even easier
DB<53> sub first (&@) { my $code=shift; &$code and return $_ for @_ +; ()} DB<54> sub any (&@) { my $code=shift; &$code and return 1 for @_ ; ( +)}
Cheers Rolf
( addicted to the Perl Programming Language)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^7: Smartmatch alternatives
by tobyink (Canon) on Dec 18, 2013 at 00:11 UTC | |
by LanX (Saint) on Dec 18, 2013 at 02:19 UTC | |
by tobyink (Canon) on Dec 18, 2013 at 07:34 UTC | |
by LanX (Saint) on Dec 18, 2013 at 08:15 UTC |
In Section
Seekers of Perl Wisdom