Forum Webscript.Ru
Программирование => Perl => Тема начата: dymka от 20 Августа 2002, 21:00:00
-
Как реализовать сабж?
Вообщем-то нужно сделать приватные переменные и методы класса.
По простому вроде нельзя(?), но как можно проще извратиться???
-
Пример-то приведи. Что нужно и что не получается.
-
Файл MyModule.pm
package MyModule;
sub new
{
# body of constructor
};
sub _private_method
{
# body of private method
};
дальше у себя в скрипте...
use MyModule;
$instance = MyModule->new;
$instance->_private_method; # вот хочу чтоб так нельзя было делать... он должен быть скрыт.
Ну как в C++, Object-Pascal. Есть три типа доступа к данным класса: скрытые поля, защищенные и открытые.
мнеб хотяб скрытые сделать, а то все методы доступны.
-
{
my $ss=sub {print @_; \'\';};
}
print $ss->(uuu);
{
$ss=sub {print @_; \'\';};
}
print $ss->(uuu);
Хотя я нифига не понимаю в ООП Perl да и вообще
package MyModule;
sub new { # body of constructor };
my $priv=sub { # body of private method };
sub use_priv {
$priv->(uuu);
}
-
ой ну это перл естественно а не пхп
-
package Cal;
sub new{
my $self={};
bless($self);
return $self;
}
my $ss=sub {$_[0]+$_[1]};
sub priv {
shift;
$ss->(@_);
}
1;
____________________________________________________
use Cal;
$obj=Cal->new();
print $obj->priv(1, 3);
-
Ясно... то бишь процедуру хранить не явно, а в виде указателя, который является переменной модуля...
Слыхал что в 6-ой версии с поддержкой ООП будет получше... ждемс стабл...
-
>>то бишь процедуру хранить не явно, а в виде указателя, >>который является переменной модуля
Могу добавить ЛОКАЛЬНОЙ переменной модуля(my)
my $ss
Хотя насколько ДОПУСТИМ такой \'метод\' создания приватных методов судить СПЕЦАМ
-
Ну не слишком изящно, но меня такой путь вполне устраивает... :)