Я только начал разрабатывать класс Perl, и мой единственный предыдущий опыт работы с OOP с C++ был давным-давно.Объекты Perl - инициализация переменной класса
Есть несколько элементов данных, которые мне нужны для «переменных класса» - общие для всех экземпляров. Я бы хотел, чтобы они были инициализированы до того, как я впервые создам объект, и мне бы хотелось, чтобы основная программа вызывала use MyClass
, чтобы предоставить параметр для этого процесса инициализации.
Вот рабочий пример класса с переменным классом:
package MyClass;
use strict;
use warnings;
# class variable ('our' for package visibility)
#
our $class_variable = 3; # Would like to bind to a variable
sub new {
my $class = shift;
my $self = { };
bless $self, $class;
return $self;
}
sub method {
my $self = shift;
print "class_variable: $class_variable\n";
++$class_variable; # prove that other instances will see this change
}
А вот это демо:
#!/usr/bin/perl
use strict;
use warnings;
use MyClass;
my $foo = MyClass->new();
$foo->method(); # show the class variable, and increment it.
my $bar = MyClass->new();
$bar->method(); # this will show the incremented class variable.
Есть ли способ для основной программы, чтобы указать значение $ class_variable ? Значение будет известно во время компиляции в основной программе.
Возможный дубликат [Как я могу установить статическую переменную, которая с доступ ко всем подклассам того же базового класса (Perl/Moose)?] (https://stackoverflow.com/questions/7587157/how-can-i-set-a-static-variable-that-can-be -accessed-by-all-subclasses-of-the) –