2014-02-14 3 views
3

У меня есть некоторые поля в компоненте (включенные в базовый компонент < & file.mi &>, ничего не придумал здесь), и я не могу понять, как установить значение по умолчанию для массив.
Мой deffinition выглядеть следующим образом:Moose in Mason - значение массива по умолчанию не установлено

<%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 
] 

Btw, почему вы используете:

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

вместо

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

EDIT

Я переслал эту проблему в список рассылки масонов, и автор Поэта/Мейсона (Джонатан Свартц) очень быстро ответил и обновил Поэту до версии 0.15, что исправляет ошибку.

Итак, если вы обновляете ваш поэт 0.15

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

должен работать.

+0

Спасибо, что работает и для меня тоже :). Perl переменные/имена/типы/системы ссылок все еще немного запутывают меня, поэтому я пробовал много «вариантов» (думая, это было так) и просто вставлял то, что имело для меня наибольший смысл;). – Liberat0r

+1

@ Liberat0r - Я проверял эту проблему более глубоко, и это очень странно. Я переслал его в список рассылки масона - возможно, кто-то ответит на него - и изменит мой ответ ... – kobame

+0

@ Liberat0r - см. Редактирование - обновите своего Поэта до свежего v0.15. ;) – kobame