任何人都可以解释重要性以及如何在perl中使用祝福.我已经阅读了许多关于堆栈溢出的线程,但他们并不清楚.
这是一种使Perl将包处理为面向对象的类,以及将祝福的对象作为这些类的实例的方法.
祝福引用标记它,以便解释器知道它与哪个包相关联.例如,如果你写:
$x = {}; bless $x, "somepackage";
Run Code Online (Sandbox Code Playgroud)
然后你可以稍后写:
$x->method(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
翻译会将此视为:
somepackage::method($x, 1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
这是一个真实的简单例子.在名为MyClass.pm的文件中创建一个类:
package MyClass;
sub new {
my ($class_name) = @_;
my $new_instance = {};
bless $new_instance, $class_name;
return $new_instance;
}
sub set {
my ($self, $name, $value) = @_;
$self->{$name} = $value;
}
sub get {
my ($self, $name) = @_;
return $self->{$name};
}
Run Code Online (Sandbox Code Playgroud)
现在您可以在代码中使用该类:
import MyClass;
my $instance = MyClass->new; # Same as MyClass::new("MyClass")
$instance->set('age', 30); # Same as MyClass::set($instance, 'age', 30)
print $instance->get('age'); # Same as MyClass::get($instance, 'age')
Run Code Online (Sandbox Code Playgroud)
arrow运算符结合了bless如何绑定对包名的引用,为您提供了很好的面向对象语法.