Автовівіфікація (англ. autovivification) — автоматичне створення нових масивів та хешів, щоразу коли звертаються до неописаного значення всередині них. З'явилась в мові Perl, і дозволяє програмісту звертатись до структури даних та довільних її піделементів, без явного створення структури даних перед звертанням.
Емуляція в інших мовах програмування Редагувати
Python Редагувати
Модуль collections
містить клас defaultdict
який можна використати для реалізації автовівіфіковних словників за допомогою простої рекурсивної функції.
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...»
- . Архів оригіналу за 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.]