ХОРОШО. У меня проблема при попытке наследования констант, установленных в родительском классе для любого из дочерних классов.
#!/usr/bin/perl
use strict;
use warnings;
package Car;
use Exporter qw( import );
our @EXPORT_OK = ( 'WHEELS', 'WINGS' );
use constant WHEELS => 4;
use constant WINGS => 0;
sub new {
my ( $class, %args ) = @_;
my $self = {
doors => $args{doors},
colour => $args{colour},
wheels => WHEELS,
wings => WINGS,
};
bless $self, $class;
return $self;
}
package Car::Sports;
use base qw( Car );
sub new {
my ( $class, %args ) = @_;
my $self = {
doors => $args{doors},
engine => $args{engine},
wheels => WHEELS,
wings => WINGS,
};
bless $self, $class;
return $self;
}
package main;
my $obj = Car->new( doors => 4, colour => "red" );
print Dumper $obj;
my $obj2 = Car::Sports->new( doors => 5, engine => "V8" );
print Dumper $obj2;
__END__
Ошибка:
Bareword "WHEELS" not allowed while "strict subs" in use at ./t.pl line 30.
Bareword "WINGS" not allowed while "strict subs" in use at ./t.pl line 30.
Execution of ./t.pl aborted due to compilation errors.
Теперь я не пришел сюда, чтобы опубликовать, не проведя никаких исследований. Я понимаю, что одним из вариантов было бы использование Car qw (WHEELS WINGS)
в Автомобиль:: Спорт
. Однако, если я сделаю это, я получу следующую ошибку, потому что все классы встроены в один файл:
Can't locate Car.pm in @INC
По разным причинам, мне нужно сохранить свои пакеты в одном файле. Есть ли способ обойти это? Поскольку константы в основном просто подводы, почему я должен импортировать их, когда то же самое не будет верно для нормального метода?
Наконец, я также знаю, что я могу сделать это:
package Car::Sports;
use base qw( Car );
sub new {
my ( $class, %args ) = @_;
my $self = {
doors => $args{doors},
engine => $args{engine},
wheels => Car::WHEELS,
wings => Car::WINGS,
};
bless $self, $class;
return $self;
}
И это нормально... Но у меня есть несколько классов и я хочу сделать наследование констант более родовым, что нужно назвать родительский класс явно (и иногда это не только родительский класс, но бабушка и дедушка).
Заранее большое спасибо за любые указатели!
Ура
-121--1774073-Можно ли определить региональные настройки машины клиента, используя чистый javascript? Мне нужно получить первый день недели. Это воскресенье или понедельник.