Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:22 24.06.24 
Компютри и Интернет
   >> Perl
Всички теми Следваща тема *Кратък преглед

Тема Помощ и от мен / въпрос на Перл  
АвторПeшo (Нерегистриран)
Публикувано09.01.06 16:56



Може ли да ми кажете как е възможно това? Имаме 2 функции set_table и get_table (в голям CGI уебсайт):

sub set_table
{
my ($self, $table) = @_;
if (defined ($table))
{
$self->{_table} = $table;
}
}

sub get_table
{
my $self = shift;
return $self->{_table};
}

Съвсем нормални ми се струват. И ги извиквам така:

$self->set_table("clicks");
my $x = $self->get_table();
die "$x";

И чудо на чудесата: $x не е clicks, a друго име на таблица (което така и не знам къде го задават, ама явно някъде). А ако в set_table сложа die statement така:

$self->{_table} = $table;
my $x = $self->{_table};
die "$x";

$x си е clicks, както може да се очаква. Как може такова чудо да стане? Перл ми е страшна мъгла - ще ме уволнят. Помагайте сега.



Тема Re: П.С. дообяснявамнови [re: Пeшo]  
АвторПeшo (Нерегистриран)
Публикувано09.01.06 17:16



Трудничко ще е да ми помогнете май, защото така написани нещата нямат много смисъл. Видях как задават първоначалното име на таблицата. Ето цялата set_table:

sub set_table
{
my ($self, $table) = @_;
if (defined ($table))
{
$self->{_table} = $table;
}
else
{
$self->{_table} = $self->{_table_desc}->{'table'};
}
}

А и конструктора:

#constructor
sub new
{
my ($class, $table_desc) = @_;
my $self = {
_table_desc => undef,
_values => undef,
_table => undef,
_dirty => 1,
};
$self->{_table_desc} = $table_desc;
bless $self, $class;
$self->set_table();
return $self;
}

Останалия код не виждам какво общо може да има. Това чудо ли е или някой има разумно обяснение?



Тема Re: П.С. дообяснявамнови [re: Пeшo]  
Автор sdg (shebang addict)
Публикувано10.01.06 16:18



Сега остава да опишеш как създаваш нова инстанция

Подозирам, без доказателства, че set_table не получава $self като първи аргумент и $table като втори, а получава само $table като първи и единствен аргумент.

Можеш да изведеш стойностите на $self и $table във функцията set_table за да докажеш или отхвърлиш хипотезата.

RTFM!
--sdg


Тема Re: Помощ и от мен / въпрос на Перлнови [re: Пeшo]  
Авторsh1tn (Нерегистриран)
Публикувано11.01.06 11:40



v klasa vsichko e kakto sledva da e.
proveri kakvo ima v obekta (i dali e obekt vyobshte):

my $obj = TEST->new();

$obj->set_table("clicks");

my $x = $obj->get_table();

use Data::Dumper;
print Dumper($obj);

__END__

sledva da imash tozi STDOUT:

$VAR1 = bless( {
'_dirty' => 1,
'_table_desc' => {},
'_table' => 'clicks',
'_values' => undef
}, 'TEST' );




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.