如何处理基于SCALAR的Perl类的属性?
发布时间:2020-12-16 09:49:21 所属栏目:安全 来源:网络整理
导读:在Perl中,很容易祝福hashref并使用它来存储和读取属性: package MyPackage;use strict;use warnings;sub new { bless {},__PACKAGE__;}sub SomeProperty { my $self = shift; if (@_) { return $self-{SomeProperty} = shift; } $self-{SomeProperty};}# Or
在Perl中,很容易祝福hashref并使用它来存储和读取属性:
package MyPackage; use strict; use warnings; sub new { bless {},__PACKAGE__; } sub SomeProperty { my $self = shift; if (@_) { return $self->{SomeProperty} = shift; } $self->{SomeProperty}; } # Or even like this to be able to call $obj->OtherProperty = $x; sub OtherProperty : lvalue { my $self = shift; $self->{OtherProperty}; } 但是,我已经看到一些类(来自不同的Perl模块),当转储时,显示一个简单的标量祝福: $obj = bless( $8756489,'Some::Package' ); 然而,他们有方法和属性.我理解的方法,当询问祝福的$object->名称时,将调用包可以调用的任何子例程.我不理解的部分是它们如何存储属性.这些物业存放在哪里? 有几次他们接受$obj-> property = $x或$obj-> property($x)之类的东西,并且可以独立于同一个Class的其他实例.这些物业存放在哪里? 我知道这实际上取决于类的底层实现,它正在做什么或它正在与之交互,并且实际上可以多次回答这个问题(例如,对象只是在某个地方与另一个对象或连接接口,只发送或向它求价值). 但是,如果有一种基于标量的对象存储属性的方法(比如Perl中的类结构的不同概念或方法),我真的很想知道它. 提前感谢您的任何意见! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |