#perl #void #perl-critic
#perl #void #perl-критик
Вопрос:
Ниже есть строка кода Perl, из которой я получаю сообщение perlcritic
:
map { $total_ids = scalar @{$ids->{$_}} } @brands;
Сообщение:
"map" used in void context near 'map { $total_ids = scalar @{$ids->{$_}} } @brands;'
Кто-нибудь может мне помочь это исправить?
Ответ №1:
map
возвращает список, который в контексте void выбрасывается.
Как рекомендовано Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidMap, превратите ваш map
в foreach
$total_ids = scalar @{$ids->{$_}} foreach @brands;
Комментарии:
1. »
map
в контексте void больше не дорого.map
теперь она зависит от контекста и не будет создавать список, если вызывается в контексте void. » — от perl581delta . Так что это не так с 2003 года.2. Использование
map
в контексте void по-прежнему является плохой идеей. Но потому, что это запутывает ваш код, а не потому, что это имеет какие-либо фактические вредные последствия.3. Или просто:
$total_ids = @{$ids->{$_}} for @brands;