Perl6 (Raku) で要素が一つの配列(特にハッシュの配列または配列の配列)を定義しようとしたときに、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")},]
以上です。