Mason中的Moose - 未设置默认数组值

时间:2014-02-14 12:29:59

标签: perl moose mason

我在组件中有一些字段(由<& file.mi&>包含在基本组件中,这里没什么特别的),我无法弄清楚如何为数组设置默认值。
我的定义看起来像这样:

<%class>
    has 'field' => (is => 'ro', isa => 'ArrayRef[Int]', default => sub{\[1,3]});
</%class>

然后在

<%init>
    dp_live($.field);
</%init>

我有一个空数组。我在互联网上找到的任何东西似乎都没有用。我确信这是次要的,我只是看不到它。

感谢。

1 个答案:

答案 0 :(得分:1)

出于某种原因,梅森不喜欢类型。这有效:

<%class>
        has 'field' => (is => 'ro', default => sub{[1,3]});
</%class>

<pre>
<% dh $.field %>
</pre>

并打印:

[dh at .../testpoet/comps/ar.mc line 6.] [99751] [
  1,
  3
]

顺便问一下,你为什么使用:

default => sub{\[1,3]});

而不是

default => sub{[1,3]});

修改

我将这个问题转发给了mason-users邮件列表,Poet / Mason(Jonathan Swartz)的作者真的很快回应并将Poet更新到版本0.15修复了这个bug。

所以,如果你将诗人更新为0.15

has 'field' => (is => 'ro', isa => 'ArrayRef[Int]', default => sub{[1,3]});

应该有用。