Структура с именованными полями удобнее простых массивов, когда в ней содержатся данные разных типов. Собственно, члены-данные классов в ООП этим и ценны.
В перле (пятой версии) ООП сделан на хешах и поэтому не дает никаких преимуществ по скорости обращения к отдельным элементам по сравнению с обычными хешами.
Иногда возникают задачи, в которых необходимо собирать большие списки некоторых объектов, но оптимизторская жаба заставляет применять списки и запоминать порядок элементов.
Вот пример. Нужно собрать результаты поиска по сайту. Каждый результат — это пара из ссылки и заголовка.
Очень удобно было бы (предположив, что $search_item — это объект типа SearchItem) написать
push @result, $search_item;
Чуть менее удобно, но не менее наглядно, создавать безымянные хеши:
push @result, {
url => $url,
title => $title,
};
В реальности же приходится делать списки:
push @result, [
$uri,
$title
];
Теперь не обидно создавать большие списки таких безымянных массивов, не беспокоясь о неоптимальном расходе памяти на ключи.
Комментировать