Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Template Toolkit - Недостатки07 мая 2011Оглавление: 1. Template Toolkit 2. Недостатки 3. Подсказки Из-за того, что в Перле присутствуют переменные разных типов, а в Template Toolkit все они вызываются одинаково, возникают неоднозначности. Есть особенности работы с объектами-хэшами, и объектами-массивами: При попытке прохода по объекту-массиву через FOREACH выяснится, что в списке будет присутствовать только один элемент сам объект. А при обращения к элементу arrayobj.$index, где index индекс требуемого элемента, Template Toolkit попытается вызвать метод с таким именем. А методов с именами 0, 7, 12 и т. д. в языках программирования, в общем-то, не бывает. Для решения этих проблем в код класса нужно добавить метод as_list именно его Template Tookit вызывает при использовании FOREACH. sub as_list { }] } Смысл этого кода состоит в том, что берётся сам объект, превращается в обычный массив, и сразу же преобразуется в ссылку на массив то, что нужно для FOREACH. Как as_list помогает при выборке конкретных элементов из объекта? aref = aref_object.as_list; aref.0; aref.1; Проблемы вызывает присутствие в классе функции AUTOLOAD:
Вторую проблему можно решить так: sub AUTOLOAD { my = $AUTOLOAD=~/$/; #Найти имя запрашиваемого метода if { #Если у объекта существует ключ с именем $sub_name, return $_{$sub_name} #то вернуть его } } Просмотров: 2602
|