Встроенная функция значения для хэшей вернет список всех значений хеш-функции.Вы можете использовать это, чтобы получить или установить любые значения с помощью конструкций списка псевдонимов, таких как foreach
, map
и grep
:
for my $value (values %hash) {
say $value; # prints the value
$value++; # adds one to the value
}
Или вы можете сохранить значения в массиве:
my @vals = values %hash;
Порядок возвращаемых значений фактически случайный, но он будет такой же, как у соответствующей функции keys
.
Сами хеши являются списками, поэтому вы можете получить доступ к любому нечетному элементухэша в контексте списка, чтобы получить значение, но этот метод менее эффективен, так как для формирования списка необходимо разбирать весь хеш, а не только значения.
Приведенные выше методы работают с хешамилюбой размер.Если у вас есть только одна пара ключ / значение:
my %hash = qw(foo bar);
, тогда они уменьшаются до:
{my ($x) = values %hash; say $x} # bar
{my (undef, $x) = %hash; say $x} # bar
{my $x = (values %hash)[0]; say $x} # bar
{my $x = (%hash)[1]; say $x} # bar