class - Perl 中的对象属性访问

标签 class perl object yaml

我想创建一个 Perl 类并填充其属性。对象属性将像下面的 yaml 文件一样填充。

$data = LoadFile("$mydir/$ARGV[$j]");
my $X= $data->{a}{b}{c};

package Person;
sub new {
   my $class = shift;
   my $self = {
   a=>shift;
};
   bless $self, $class;
   return $self;
}
my $p=Person->new();

我想访问这样的属性。我怎样才能做到这一点?

$p->a($data->{a}{b}{c});

最佳答案

$p->a($data->{a}{b}{c}) 毫无意义。您的意思是 $p->a->{a}{b}{c} 吗?

package Person;

sub new {
   my ($class, $data) = @_;
   my $self = bless({}, $class);
   $self->{data} = $data;
   return $self;
}

sub data { $_[0]{data} }

1;
my $data = LoadFile(...);
my $p = Person->new($data);
say $p->data->{a}{b}{c};

关于class - Perl 中的对象属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66645224/

相关文章:

perl - grep 匹配某个模式的行,以及匹配前后的行

c++ - 如何访问在当前函数范围之外创建的动态创建的对象?

javascript - 如何从对象中获取值?

c++ - 为什么 CLion 不将类标记为类?

c++ - 车课(第一次上课)

c++ - 在 C++ 中将对象创建为私有(private)类变量

正则表达式 : replace a phrase only if NOT preceded by a word

perl - 可以修补 File::Find::Rule 以自动处理文件名字符编码/解码吗?

python - 如果子类由构造逻辑确定,那么分离类及其父类逻辑的最pythonic和优雅的方法是什么?

javascript - 如果是 "Strings are objects,"那么为什么我不能在它们上面存储属性?