[Moscow.pm] keys() и разыменование undef

Oleg Alistratov ali на ali.org.ua
Вт Ноя 19 03:36:19 PST 2013


Нет, это речь о самом keys, это само собой.
А зачем _аргументу_ быть lvalue? 



19.11.2013, 13:29, "Denis Ibaev" <dionys на gmail.com>:
> 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 mailing list
> moscow-pm на pm.org | http://moscow.pm.org

-- 
Oleg Alistratov


Подробная информация о списке рассылки Moscow-pm