Perl: как проверить, есть ли в массиве целые числа в списке - PullRequest
0 голосов
/ 31 декабря 2010

Аналогично моему предыдущему вопросу, но на этот раз я хотел бы знать, есть ли какие-либо целые числа в списке целых чисел в массиве.

Например, если у меня есть:

@int_array = (7,101,80,22,42);

Как я могу проверить, находится ли целое значение 80 или 77 или 99 в массиве?Есть ли лучший способ, чем просто сделать отдельный smartmatch для каждого целого числа в списке?Я использую Perl 5.10.1

Ответы [ 5 ]

4 голосов
/ 01 января 2011

Я думаю, что лучший ответ здесь:

perldoc -q "How can I tell whether a certain element is contained in a list or array?"

http://perldoc.perl.org/perlfaq4.html#How-can-I-tell-whether-a-certain-element-is-contained-in-a-list-or-array%3f

2 голосов
/ 31 декабря 2010
#!/usr/bin/env perl
use warnings;
use 5.012;

my @array = (7,101,80,22,42);
my @items = (77,81,99);
my $it = join '|', @items;
my $re = qr/^(?:$it)\z/; 
say $re ~~ @array ? 'OK' : 'Not OK';
1 голос
/ 31 декабря 2010

вы можете превратить массив в хеш, поэтому вместо того, чтобы искать по всему списку каждый раз, когда вы хотите найти что-то, вы можете найти его немедленно.

0 голосов
/ 03 января 2011

есть также метод 'grep'

if (grep / $ num /, @array) {print "yerp! \ N";}

0 голосов
/ 31 декабря 2010

Самый простой способ - превратить массив int в хеш, где int - это ключ и значение.Тогда вы можете посмотреть прямо с if (exists($intHash{$iVal))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...