bless在perl中的哈希值中意味着什么? [重复]

问题描述 投票:1回答:1

此祝福在下面的哈希值中意味着什么,以及如何取消引用它?

'limit' => bless( {
'days' => 2,
'minutes' => 0,
'months' => 0,
'nanoseconds' => 0,
'seconds' => 0
}),
perl hash bless
1个回答
4
投票
[bless是Perl的面向对象编程的机制的核心部分,如perldoc blessperldoc bless中所述。

问题中的陈述存在于包装内;在源文件中的它上方查找一行perldoc perlobj,以查找它属于哪个程序包。如果没有perldoc perlobj语句,则默认情况下它是package SomeName的一部分,但是如果使用package,则基本上不会出现这种情况。

在核心Perl中,包和OO类或多或少是同义词,而对象只是引用,声明为该类/包的成员。 package main是用于进行该声明的命令。

((有许多针对Perl的功能更全的OO框架,例如Moo和Moose,它们添加了除基本bless参考模型所提供的功能以外的功能,但您通常不会自己使用bless当使用这样的框架时,我假设您正在查看的代码中没有使用过这样的框架。)

更具体的例子:

bless

bless引用仍然可以被取消引用,并且其内容的访问方式与未引用package MyClass;

sub show_foo { my $self = shift; return $self->{foo} }    

my $var = { foo => 'bar' };  # $var is a normal hash reference
bless $var;                  # $var is now an object of type MyClass
相同,但是通常更可取的是使用由类定义的方法,而不是直接进入胆量。例如,使用上述示例代码,尽管使用这两种方法都可以,但使用bless来获得bless$var属性的值要比使用foo更好。        
© www.soinside.com 2019 - 2024. All rights reserved.