Значение по умолчанию для отсутствующего хэша - PullRequest
0 голосов
/ 09 мая 2018

Я создал хеш в Perl my %hash = (2 => 'dog', 1 => 'cat');

Когда я печатаю $hash{3}, это ошибки (use of uninitialzed value in print), что ожидается. Но есть ли способ по умолчанию значение, если не в хэш?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Предлагаю вам взглянуть на Hash::DefaultValue модуль, который позволяет вам указать значение для хэша, которое будет возвращено вместо undef, если элемент не существует

0 голосов
/ 10 мая 2018
my $value = exists($hash{$k}) ? $hash{$k} : 'default';

Чтобы реально изменить хеш, используйте

$hash{$k} = 'default' if !exists($hash{k});

Если $hash{$k} всегда определяется, если он существует, вы также можете использовать

my $value = defined($hash{$k}) ? $hash{$k} : 'default';

, которое можно уменьшить до

my $value = $hash{$k} // 'default';   # 5.10+

Чтобы реально изменить хеш, используйте

$hash{$k} = 'default' if !defined($hash{k});

или

$hash{$k} //= 'default';   # 5.10+

Если $hash{$k} всегда верно, если оно существует, вы также можете использовать

my $value = $hash{$k} ? $hash{$k} : 'default';

, которое можно уменьшить до

my $value = $hash{$k} || 'default';

Чтобы реально изменить хеш, используйте

$hash{$k} = 'default' if !$hash{k};

или

$hash{$k} ||= 'default';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...