Соответствующая структура зависит от того, как вы будете обращаться к структурам данных и обрабатывать их. Выбор правильной структуры является большой частью решения программы. Выберите неправильную структуру, и простая проблема может стать сложной. Структура настолько важна, что иногда вам нужно преобразовать существующую структуру в форму, более подходящую для той работы, которую вам нужно выполнить.
Вот два основных правила, которые помогут вам выбрать структурные элементы:
- Если вы хотите сохранить порядок, используйте массив.
- Если вам нужно много раз искать конкретные имена, идентификаторы или другую информацию, используйте хэш.
Так что, если вы просто хотите посчитать окна, найдите прямоугольное число с соотношением сторон, аналогичным экрану, который больше, чем количество окон, а затем расположите окна по очереди: просто используйте массив.
Если вы хотите выполнить несколько действий, таких как поиск окон по имени приложения или другие вещи, которые требуют много разных поисков, используйте хеш.
Если вам нужно выполнить много поисков по нескольким ключам, а также поддерживать порядок, вы можете создать несколько структур данных, которые указывают на одни и те же базовые ссылки.
my @foo = (
{ name => 'a', id => '321' },
{ name => 'b', id => '123' },
);
my %foo_by_name = map { $_{name} => $_ } @foo;
my %foo_by_id = map { $_{id } => $_ } @foo;
Если вам нужно манипулировать своей сложной коллекцией (добавлять и удалять элементы), рассмотрите возможность оборачивания различных структур в объект, что обеспечит согласованное управление всеми базовыми структурами.