gpt4 book ai didi

perl - Moose 只读属性特征以及如何设置它们?

转载 作者:行者123 更新时间:2023-12-05 00:57:46 27 4
gpt4 key购买 nike

如何设置 Moose 只读属性特征?

package AttrTrait;
use Moose::Role;
has 'ext' => ( isa => 'Str', is => 'ro' );

package Class;
has 'foo' => ( isa => 'Str', is => 'ro', traits => [qw/AttrTrait/] );

package main;
my $c = Class->new( foo => 'ok' );
$c->meta->get_attribute('foo')->ext('die') # ro attr trait

如果不能在构造函数或运行时设置只读属性特征,它的用途是什么?我在 Moose::Meta::Attribute 中遗漏了什么吗? ?有没有办法使用 meta 来设置它?

$c->meta->get_attr('ext')->set_value('foo') # doesn't work either (attribute trait provided not class provided method)

最佳答案

可以在构造函数中设置:

package Class;
has 'foo' => ( isa => 'Str', is => 'ro', ext => 'whatever', traits => ['AttrTrait'] );

你只需要将它传递给正确的构造函数(属性的构造函数)。

关于perl - Moose 只读属性特征以及如何设置它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com