Изначально мой код выглядел так:Условно экземпляр нового массива Perl
my @departments = @{$opts->{'d'}} if $opts->{'d'};
Я хотел реорганизовать заявление в линии if
согласно Perl Best Practices, так что теперь у меня есть следующий код:
my @departments;
if($opts->{'d'})
{
@departments = @{$opts->{'d'} };
}
$opts
- это просто хеш-ссылка, которая может иметь массив ref как значение ключа.
Я хотел бы сделать что-то вроде следующего, чтобы сохранить код на одной строке:
my @departments = $opts->{'d'} ? @{$opts->{'d'}} : undef;
Но очевидно, что будет просто поставить один элемент в @departments
со значением undef
.
Причина я выполнить это действие таким образом, потому что позже я хочу, чтобы иметь возможность проверить
if(@departments)
{
my $department_string = join(q{,}, @departments);
$big_string . $department_string;
}
динамически добавлять в строку.
'my @departments = map $ _, @ {$ opts -> {d}};' :) Нет, не используйте это, это странный способ сделать 'my @departments = @ {$ opts- > {d} // = []}; ' – ikegami