Perl6 で要素が一つの配列(特にハッシュの配列または配列の配列)を定義しようとしたときに、Rubyのように書いていたらつまづいたので、ここにメモします。
よくやるパターン
次に示すように、ハッシュの配列を定義しようとすると、ペア(Pair)の配列になってしまう問題がある。 もちろん、これは期待していない振る舞いだ。
my @list = [
{ name => "foo", id => 1 }
];
@list.perl.say;
上の出力(ペアの配列)
[:id(1), :name("foo")]
解決法
{ }
の末尾に ,
を入れることで、正しくハッシュと認識される。
この問題は 2次元配列でも起きるようだが、同様に [ ]
の末尾に ,
を入れれば良い。
my @list = [
{ name => "foo", id => 1 }, # <= カンマがあることに注目
];
@list.perl.say;
上の出力(ハッシュの配列)
[{:id(1), :name("foo")},]