perl - 如何在 Perl 中使用 Bless 运算符?

标签 perl bless

任何人都可以解释一下重要性以及如何在 perl 中使用 bless。 我在 bless 上阅读了很多关于堆栈溢出的线程,但它们并不清楚。

最佳答案

这是一种让 Perl 将包视为面向对象的类,并将受祝福的对象视为这些类的实例的方法。

祝福引用标记它,以便解释器知道它与哪个包相关联。例如,如果您这样写:

$x = {}; bless $x, "somepackage";

然后你可以稍后写:

$x->method(1, 2, 3);

解释器会将其视为:

somepackage::method($x, 1, 2, 3);

这是一个真正简单的例子。在名为 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};
}

现在您可以在代码中使用该类了:

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')

箭头运算符,结合 bless 如何将引用绑定(bind)到包名称,为您提供了很好的面向对象语法。

关于perl - 如何在 Perl 中使用 Bless 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212597/

相关文章:

perl - perl-关闭if语句时语法错误

perl - 如何使用 Perl 通过套接字发送逐字请求?

regex - Bash 替换文件中的 '\n\n}' 字符串

Perl:如何深度复制受祝福的对象?

Perl:检查某物是否被作为包祝福的对象的优雅方式?

perl - 祝福还是不祝福,这是我的问题!

bash - 下载大于一定大小的文件

Perl Archive::zip -- 文件未添加