[Moscow.pm] Interesting behavior of 'delete' function

Alessandro Gorohovski an.gorohovski на gmail.com
Чт Ноя 29 02:16:16 PST 2018


или здесь:
https://www.youtube.com/watch?v=2wxL3DYen5g


чт, 29 нояб. 2018 г. в 13:14, Alessandro Gorohovski <an.gorohovski на gmail.com
>:

> чт, 29 нояб. 2018 г. в 13:06, Andrei <andrei.protasovitski на gmail.com>:
>
>> Всё верно.
>>
>> По шагам:
>>
>> delete $a{11}{21,24}{31}
>>
>> 1. Сначала ищется элемент $a{11}. Он есть, и он ссылка на хэш.
>> 2. Дальше в это подхэше ищется элемент $a{11}{21,24}. Список (21,24)
>> преобразуется в строку "21$;24". Такого элемента не находится, поэтому
>> из-за autovivification, включённого по умолчанию, этот элемент создаётся и
>> его значение устанавливается в undef.
>> 3. Далее ищется элемент $a{11}{21,24}{31}. Его нет, поэтому
>> значением $a{11}{21,24} становится ссылка на хэш, в котором снова
>> из-за autovivification создаётся элемент с ключом 31 и значением undef.
>> 4. И только после этого delete удаляет только что созданные элемент и
>> возвращает его значение undef.
>>
>> Элемент, созданный на шаге 2, никуда не девается, вот он там и сидит,
>> память занимает, программистов пугает.
>> :)
>>
>
> Да, Андрей, это всё верно вы представили/объяснили
> :)
> Подобную ситуацию пожалуйста посмотрите тут:
> https://www.youtube.com/watch?v=ZIig5fgp7nY
>
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20181129/8af164ee/attachment.html>


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