Функции keys и values

Функция keys строит список всех ключей хеша, а функция values строит список соответствующих значений. Если хеш не содержит элементов, то обе функции возвращают пустой список:

my %hash = ("a" => 1, "b" => 2, "c" => 3);
my @k = keys %hash;
my @v = values %hash;

Список @k будет содержать элементы "a", "b" и "c", а @v – элементы 1, 2 и 3. Порядок следования элементов заранее неизвестен; напомним, что в хешах Perl элементы не упорядочиваются. Но в каком бы порядке ни следовали ключи, значения будут следовать в том же порядке: скажем, если "b" находится на последней позиции в списке ключей, то 2 будет на последней позиции в списке значений; если "c" – первый ключ, то 3 будет первым значением, и т. д. Это утверждение истинно при условии, что хеш не изменяется между получением списков ключей и значений. При добавлении элементов в хеш Perl сохраняет право переставить элементы так, как сочтет нужным, для обеспечения скорости выборки. В скалярном контексте эти функции возвращают количество элементов в хеше (пар «ключ-значение»). Они делают это весьма эффективно, без перебора всех элементов хеша:

my $count = keys %hash; # Возвращает 3 (три пары "ключ-значение")

Время от времени хеши встречаются в логических (true/false) выражениях следующего вида:

if (%hash) {
print "That was a true value!\n";
}

Выражение истинно в том (и только в том) случае, если хеш содержит хотя бы одну пару «ключ-значение». Таким образом, условие фактически означает: «Если хеш не пуст…» Но в целом такая конструкция встречается довольно редко.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Зачем использовать хеш?
Интерполяция элементов хеша
Обращение к элементам хеша
Присваивание хешей
Типичные операции с хешами

Вернуться в раздел: Perl / 5. Хеши