Какова общая идея модулей Perl с пространством имен Tie ::? - PullRequest
0 голосов
/ 13 февраля 2019

В CPAN существует множество модулей с пространством имен Tie:: - Tie :: Hash , Tie :: Sub , Tie :: Cache , Tie :: DBI и т. Д. Что среди них общего?

Я проверил perltie , но не уверен, что понял концепцию ясно.Может кто-нибудь объяснить это?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Это касается только связывания хэшей, но моя статья на perl.com от 2001 может ответить на несколько вопросов.

0 голосов
/ 13 февраля 2019

Модули в пространстве имен Tie :: делятся на две категории:

  • Те, которые реализуют класс, к которому может быть привязана переменная (например, Tie :: DBI
  • Те, которые помогают пользователю в создании таких классов (например, Tie :: Hash ).

tie позволяетобъект, чтобы взять интерфейс переменной.Когда вы читаете из связанной переменной, вы фактически вызываете метод для извлечения информации.Когда вы пишете в связанную переменную, вы фактически вызываете метод с информацией.

Например, давайте рассмотрим хеш, связанный с Tie :: DBI.

  • КогдаВы перечисляете ключи хеша, вызывается метод, который вместо этого получает первичный ключ каждой строки таблицы базы данных.
  • Когда вы выбираете значение элемента хеша, вызывается метод, который получаетвместо указанной строки таблицы базы данных.
  • Когда вы создаете / устанавливаете значение элемента хеша, вызывается метод, который вместо этого создает / устанавливает поля указанной строки таблицы базы данных.
...