3

我在一个组件中有一些字段(由 <& file.mi &> 包含在基本组件中,这里没什么特别的),我不知道如何为数组设置默认值。
我的定义如下:

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

然后在

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

我有一个空数组。我在互联网上找到的任何东西似乎都不起作用。我确定这是小事,我只是看不到它。

谢谢。

4

1 回答 1

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 版本,从而修复了这个错误。

因此,如果您将 Poet 更新到 0.15

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

应该管用。

于 2014-02-25T07:52:07.797 回答