gpt4 book ai didi

perl - 如何声明采用 undef 或角色的属性?

转载 作者:行者123 更新时间:2023-12-04 06:16:34 28 4
gpt4 key购买 nike

我有一个 Moose 类,它的属性起到一定的作用:

has foo => (is => 'rw', does => 'Foo::Bar');

现在我如何更改声明以允许 undef ?我试过 does => 'Maybe[Foo::Bar]' ,但这似乎不起作用,不允许合法定义的值通过。

最佳答案

可以使用 isa 指定此类约束。 .根据 Moose::Util::TypeConstraints角色名称也是有效的选项。

package Foo::Bar;
use Moose::Role;


package WithFooBar;
use Moose;
with 'Foo::Bar';


package Thing;
use Moose;

has foo => (is => 'ro', isa => 'Maybe[Foo::Bar]');

package main;
use Test::More;

ok(Thing->new(foo => undef)); # pass
ok(Thing->new(foo => WithFooBar->new)); # pass
ok(Thing->new(foo => Thing->new)); # fails

done_testing;

关于perl - 如何声明采用 undef 或角色的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158763/

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