2014-02-14 70 views
3

我有一個組件中的字段(包含在基本組件中,由< & file.mi &>,這裏沒有什麼奇特的),我不知道如何設置默認值爲數組。
我deffinition這個樣子的:駝鹿在梅森 - 默認數組值沒有設置

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

然後在

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

我得到一個空數組。我在互聯網上找到的東西似乎沒有用。我確信它是一些小事,我只是看不到它。

謝謝。

回答

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郵件列表,詩人/梅森(Jonathan Swartz)的作者很快回應並更新了Poet版本0.15修正了這個bug。

所以,如果你更新你的詩人0.15

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

應該工作。

+0

謝謝,這對我也適用:)。 Perl變量/名稱/類型/引用系統對我來說仍然有點困惑,所以我嘗試了很多「變體」(想到這種情況),並且粘貼了對我最有意義的東西;)。 – Liberat0r

+1

@ Liberat0r - 我更深入地檢查了這個問題,這非常奇怪。我轉發給梅森郵件列表 - 也許有人回答 - 並將修改我的答案... – kobame

+0

@ Liberat0r - 請參閱編輯 - 更新您的詩人到新鮮的v0.15。 ;) – kobame