gpt4 book ai didi

perl - MooseX::AttributeHelpers 和 MooseX::FollowPBP 是否正确交互?

转载 作者:行者123 更新时间:2023-12-01 10:15:09 24 4
gpt4 key购买 nike

以下代码定义了两个类(DeckADeckB),它们的区别仅在于它们是否使用MooseX::AttributeHelpers 附带的功能。 . Moose 为 DeckB 生成的 getter 不是我所期望的。这是一个错误还是我误解了MooseX::AttributeHelpersMooseX::FollowPBP应该互动吗?

我现在的解决方法是避免在这种情况下使用 is 参数,而是根据需要声明一个 readerwriter

use strict;
use warnings;

my %moose_args = (
isa => 'ArrayRef[Str]',
is => 'ro',
default => sub {[]},
);

my %moose_attr_helper_args = (
metaclass => 'Collection::Array',
provides => {
elements => 'get_all_cards',
},
);

package DeckA;
use Moose;
use MooseX::FollowPBP;
use MooseX::AttributeHelpers;
has 'cards' => (%moose_args);

package DeckB;
use Moose;
use MooseX::FollowPBP;
use MooseX::AttributeHelpers;
has 'cards' => (%moose_args, %moose_attr_helper_args);

package main;
for my $class (qw(DeckA DeckB)){
my $deck = $class->new;
print "\n$class\n";
for my $method ( qw(cards get_cards get_all_cards) ){
print "$method: ", $deck->can($method) ? 'yes' : 'no', "\n";
}
}

输出:

DeckA
cards: no
get_cards: yes
get_all_cards: no

DeckB
cards: yes # Not what I expected.
get_cards: no # Not what I expected.
get_all_cards: yes

最佳答案

当您使用 MX::AH 的元类选项时,它们不起作用。

但是,最新的 Moose 集成了对本地帮助器的支持,并稍微调整了 API。此版本使用特征(应用于属性的角色),它应该与 MX::FollowPBP 一起正常工作。

关于perl - MooseX::AttributeHelpers 和 MooseX::FollowPBP 是否正确交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461267/

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