Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 11.01.2014 02:25 / 11.01.2014 02:54
@OPTIONS locals # по умолчанию все переменные класса / объекта локальные @init[hOptions] $self._hOptions[^hash::create[$hOptions]] # для того, чтобы переменная _hOptions стала полем объекта, нужно явно указать это через self @show[] $self._hOptions.iSomeId # и так же через self к ней обращаться[…]
Так, указанная опция locals автоматически объявит локальными все переменные во всех методах определяемого класса. Если она указана, то для обращения к полям объекта или класса необходимо пользоваться системной переменной self.Либо для отдельных методов, тогда поведение меняется только у переменных метода.
@init[hOptions] обычный конструктор $_hOptions[^hash::create[$hOptions]] @show[_hOptions][locals] $self._hOptions.iSomeId # поле объекта $_hOptions.iSomeId # локальная переменная[…]
Если в методе явно объявить локальную переменную locals, это будет равносильно объявлению всех переменных, используемых в нем локальными.Выделенное полужирным не совсем верно, потому что при locals у метода к полю объекта можно обратиться и без self — он требуется лишь в случае неоднозначности (как в примере выше — приоритет у локальной переменной и она найдётся первой).
Для обращения к переменных класса или объекта в этом случае необходимо использовать self.