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 に答える