Автор Тема: Скрытые (private) поля и методы модуля(класса)  (Прочитано 3309 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как реализовать сабж?
Вообщем-то нужно сделать приватные переменные и методы класса.
По простому вроде нельзя(?), но как можно проще извратиться???
« Последнее редактирование: 20 Августа 2002, 21:05:04 от dymka »

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Скрытые (private) поля и методы модуля(класса)
« Ответ #1 : 20 Августа 2002, 21:08:51 »
Пример-то приведи. Что нужно и что не получается.
The documentations is your friend

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Скрытые (private) поля и методы модуля(класса)
« Ответ #2 : 20 Августа 2002, 22:31:31 »
Файл 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. Есть три типа доступа к данным класса: скрытые поля, защищенные и открытые.
мнеб хотяб скрытые сделать, а то все методы доступны.

Unregistered

  • Гость
Скрытые (private) поля и методы модуля(класса)
« Ответ #3 : 20 Августа 2002, 23:31:37 »

{
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);
}

Unregistered

  • Гость
Скрытые (private) поля и методы модуля(класса)
« Ответ #4 : 20 Августа 2002, 23:33:44 »
ой ну это перл естественно а не пхп

ююю

  • Гость
Скрытые (private) поля и методы модуля(класса)
« Ответ #5 : 20 Августа 2002, 23:55:59 »
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);

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Скрытые (private) поля и методы модуля(класса)
« Ответ #6 : 21 Августа 2002, 07:12:03 »
Ясно... то бишь процедуру хранить не явно, а в виде указателя, который является переменной модуля...
Слыхал что в 6-ой версии с поддержкой ООП будет получше... ждемс стабл...

ююю

  • Гость
Скрытые (private) поля и методы модуля(класса)
« Ответ #7 : 21 Августа 2002, 12:17:01 »
>>то бишь процедуру хранить не явно, а в виде указателя, >>который является переменной модуля


Могу добавить ЛОКАЛЬНОЙ переменной модуля(my)

my $ss

Хотя насколько ДОПУСТИМ такой \'метод\' создания приватных методов судить СПЕЦАМ

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Скрытые (private) поля и методы модуля(класса)
« Ответ #8 : 21 Августа 2002, 16:25:42 »
Ну не слишком изящно, но меня такой путь вполне устраивает... :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28