parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 19.12.2006 23:59 / 20.12.2006 11:31

- возможность указать что для всего класса действует "локальность" переменных по умолчанию мне нравится

- мне не очень нравится такой синтаксис:
@USE
locals
т.к. он вносит дополнительное огрничение/несовместимость и использует @USE не по назначению. может лучше что-нить подобное:
@VAR
local
- мне даже нравится, что в этом случае нужно будет писать $self в конструкторах для того чтобы задать переменную класса. это будет явно и очевидно

- мне _очень_ не нравится предложеная возможность описать у конструктора хоть одну локальную переменную и таким образом получить возможность описывать поля класса без префиксов. и вот почему:

1. в приведенном примере определена, но не используется переменная i - она является первым кандидатом на удаление, ибо нечего делать в объявлениях неиспользуемым переменным.

2. @constructor[] и @constructor[][] очень сильно отличаются по сути без видимого отличия синтаксиса.

3. @constructor[] может запросто превратиться в @constructor[][потребовавшаяся_локальная_переменная] (и наоборот) и это потребует просмотра и изменения кода конструктора и добавление префикса $self определяемым переменным класса. т.е. лишь по присутствию описания локальных переменных переключать поведение не стоит (хотя по какому-нить [local] в принципе можно, только в данном случае слово 'local' не отражает сути происходящего, но ведь есть ещё и 'global', которым можно явно включать глобальность определения переменных в методе при включенной локальности в классе %-) )

4. сейчас мне не ясно, как будет работать такое:
@constructor[][i]
^declare_vars[]

@declare_vars[]
$i(1)