Показать сообщение отдельно

  #773  
Старый 31.10.2008, 00:21
akakernel
Новичок
Регистрация: 10.05.2008
Сообщений: 8
С нами: 9476191

Репутация: 0
По умолчанию

Списал из учебника примеры кодов работы с классами.
В первом случае при наследовании одним классом методов другого программа, использующая первый класс, работает нормально. Но если в этом классе определить свой метод, то программа его не находит.

Вот реализация первого класса:
Код:
package Hourly; 
 use Employee;  
our @ISA = qw(Employee); 
 sub new  
{ 
 	my $object = shift();
  	my $class = ref($object) || $object;
  	my $self = $class->SUPER::new();
  	$self->{rate} = undef;
  	bless($self, $class);
  	return $self;  
}    
sub rate { Тут реализация метода}  
1;
Реализацию второго класса и программы я приводить не буду. Вот что пишет мне при выполнении:
Код:
Can't locate object method "rate" via package Employee at __ line __
И второй случай с сокрытием данных.
Код:
package EmployeeClosure;   
sub new  
{
  	my $object = shift();
  	my $class = ref($object) || $object;
  	my $employee = {firstname => shift(), lastname => shift()};
  	my $hireDay = new Date;
  	if ($_[0]) {
  		my ($month, $day, $year) = split(/\//, $_[0]);
  		$hireDay->day($day);
  		$hireDay->month($month);
  		$hireDay->year($year);
  	}
            my $self = sub {
  				my $field = shift();
  				$employee->{$field} = shift() if (@_);
  				return $employee->($field);
  				};
  	bless ($self, $class);
  	return $self;  
}
Выдает:
Код:
Not a CODE reference at __ line 22; ( это строка return $employee->($field);)
Тут у меня вообще пока соображений нет.
 
Ответить с цитированием