如何在Perl中使用Bless Operator?

Rah*_*ddy 2 perl bless

任何人都可以解释重要性以及如何在perl中使用祝福.我已经阅读了许多关于堆栈溢出的线程,但他们并不清楚.

Cha*_*lke 7

这是一种使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如何绑定对包名的引用,为您提供了很好的面向对象语法.