我刚刚开始设计一个 Perl 类,而我之前对 OOP 的唯一经验是很久以前的 C++。
有几项数据我需要成为“类变量”——由所有实例共享。我希望它们在我第一次实例化一个对象之前被初始化,并且我希望发出的主程序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 指定一个值?该值将在主程序的编译时已知。