[Moscow.pm] keys() и разыменование undef
Denis Ibaev
dionys на gmail.com
Вт Ноя 19 03:28:30 PST 2013
19 ноября 2013 г., 15:20 пользователь Oleg Alistratov <ali на ali.org.ua> написал:
> выглядит так, будто для keys() требуется, чтобы аргумент был lvalue.
> lvalue из undef автовивифицируется, это факт.
>
> Непонятно мне только, зачем аргументу keys быть lvalue?
Вероятно, за этим (perldoc -f keys):
Used as an lvalue, "keys" allows you to increase the number of hash
buckets allocated for the given hash. This can gain you a measure of
efficiency if you know the hash is going to get big. (This is similar
to pre-extending an array by assigning a larger number to $#array.)
If you say
keys %hash = 200;
then %hash will have at least 200 buckets allocated for it--256 of
them, in fact, since it rounds up to the next power of two.
--
Денис Ибаев
Подробная информация о списке рассылки Moscow-pm