これは予期しない動作で、初心者にはうんざりです。まず、これは意図されていますか?第2に、Perl 6がどのオブジェクトを作成するかを推測するのに他にどのようなことがありますか?ブロックやハッシュと思って後で変更するのか、それとも終わりを決めるのでしょうか?それはPerl 6のハッシュまたはブロックですか?
あなたは括弧付きHashと脂肪の矢印を構築することができます。他のペアの表記を使用して
my $color-name-to-rgb = {
'red' => 'FF0000',
};
put $color-name-to-rgb.^name; # Hash
があまりにもHash作成します。
my $color-name-to-rgb = {
:red('FF0000'),
};
しかし、脂肪の矢印がない限り、私は代わりにBlockを得る:
my $color-name-to-rgb = {
'red', 'FF0000',
};
put $color-name-to-rgb.^name; # Block
Hashドキュメントは括弧内$_
を使用してBlockを作成することを言及。
ハッシュを定義する他の方法もありますが、この特定の構文について質問していますが、私がすでに知っている回避策を探していません。
$ perl6 -v
This is Rakudo version 2017.04.3 built on MoarVM version 2017.04-53-g66c6dda
implementing Perl 6.c.
エラーをスローし、 '%()'を使用するように指示するために '{}'を使ってハッシュを作成することを思い出しています。私の意見では、この振る舞いは戻るはずです。 – ab5tract
これを反映させるには、ドキュメントに大きな更新が必要です。 '%()'は、 '{}'が機能しないときの代替手段として言及されています。ドキュメントでない場合は、何をするのが好ましい方法のソースですか? –
私はあなたの評価Brianに完全に同意します。私はここでドキュメントの問題を開いたhttps://github.com/perl6/doc/issues/1380 以前は、プログラムの完了後に表示される廃止予定の警告がありました。あなたは '{}'でハッシュを作成します。 –