Автовівіфікація
Зовнішній вигляд
Автовівіфікація (англ. autovivification) — автоматичне створення нових масивів та хешів, щоразу коли звертаються до неописаного значення всередині них. З'явилась в мові Perl, і дозволяє програмісту звертатись до структури даних та довільних її піделементів, без явного створення структури даних перед звертанням.[1]
Модуль collections
містить клас defaultdict
[2] який можна використати для реалізації автовівіфіковних словників за допомогою простої рекурсивної функції.[3]
from collections import defaultdict
Tree = lambda: defaultdict(Tree)
common_name = Tree()
common_name['Mammalia']['Primates']['Homo']['H. sapiens'] = 'human being'
# Відомі цитати за п’єсою, актом та сценою:
quotes = Tree()
quotes['Hamlet'][1][3][0] = 'This above all: to thine own self be true.'
- ↑ Schwartz, Randal L.; Phoenix, Tom (2003). Learning Perl Objects. O'Reilly Media, Inc. с. 42. ISBN 9780596004781.
This process is called autovivification. Any nonexisting variable, or a variable containing undef, which is dereferenced while looking for a variable location (technically called an lvalue context), is automatically stuffed with the appropriate reference to an empty item...
- ↑ collections - High-performance container datatypes - Python v2 documentation. Архів оригіналу за 14 серпня 2014. Процитовано 14 серпня 2013.
- ↑ What is the best way to implement nested dictionaries in Python?. Процитовано 14 серпня 2013.
- perl561delta: File and directory handles can be autovivified [Архівовано 18 листопада 2010 у Wayback Machine.]
- Autovivification in Perl: An In-Depth Tutorial [Архівовано 26 грудня 2013 у Wayback Machine.]
- A Use of the Y Combinator in Ruby [Архівовано 27 квітня 2012 у Wayback Machine.] — Implements autovivification in Ruby with the Y Combinator.
- Hash#autonew in the Ruby gem «facets» adds autovivification on hash reads [Архівовано 14 серпня 2014 у Wayback Machine.]
- The Ruby gem «xkeys» facilitates nested structure traversal and autovivifies on array or hash writes [Архівовано 14 серпня 2014 у Wayback Machine.]