我在组件中有一些字段(由<& file.mi&>包含在基本组件中,这里没什么特别的),我无法弄清楚如何为数组设置默认值。
我的定义看起来像这样:
<%class>
has 'field' => (is => 'ro', isa => 'ArrayRef[Int]', default => sub{\[1,3]});
</%class>
然后在
<%init>
dp_live($.field);
</%init>
我有一个空数组。我在互联网上找到的任何东西似乎都没有用。我确信这是次要的,我只是看不到它。
感谢。
答案 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]});
应该有用。