首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在perl中,hash值中的bless是什么意思?

在perl中,hash值中的bless是什么意思?
EN

Stack Overflow用户
提问于 2020-06-10 17:51:23
回答 1查看 80关注 0票数 1

在下面的哈希值中,这个祝福意味着什么,以及如何解除它的引用?

代码语言:javascript
复制
'limit' => bless( {
'days' => 2,
'minutes' => 0,
'months' => 0,
'nanoseconds' => 0,
'seconds' => 0
}),
EN

回答 1

Stack Overflow用户

发布于 2020-06-10 19:12:02

bless是Perl面向对象编程机制的核心部分,如perldoc blessperldoc perlobj中所述。

问题中的语句存在于包中;在源文件中查看它上方的行package SomeName,找出它是哪个包的一部分。如果没有package语句,则默认情况下它是package main的一部分,但如果使用bless,基本上不应该出现这种情况。

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

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

更具体的例子:

代码语言:javascript
复制
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

blessed引用仍然可以被解除引用,其内容的访问方式就像它没有被blessed一样,但通常更可取的做法是使用由类定义的方法,而不是直接进入内部。例如,使用上面的示例代码,使用$var->show_foo获取$varfoo属性的值将比使用$var->{foo}更好,尽管这两种方法都可以工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62300652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档