show_tied
RakuでDPを使用する場合、どのようにオフにしますか?
ステートメントの最後にリストされている「タグ」ではないAssociative
s(例:Pair
s)は、フラット化されたリストのインターリーブキーと値に明示的に変換する必要use
があります。1
最も直接的な解決策は、リテラルのフラットリストを手動で書き込むことです。
use Data::Printer:from<Perl5> 'show_tied', 0;
より適切なソリューションについては、以下の「使用」kv
セクションを参照してください。
変数の注入
use
ステートメントはコンパイル時に評価されることに注意してください。したがって、リストに変数を挿入する場合は、ステートメントが評価される前に、名前だけでなく値もcompile-timeで確立されるようにする必要がありますuse
。一部は実行時に発生するmy $foo = 0;
ため、飾り気のないものでは不十分です。代わりに、次のような適切なコンパイル時の構成を使用する必要があります。= 0
BEGIN
BEGIN my $foo = 0;
use Data::Printer:from<Perl5> 'show_tied', $foo;
使用する kv
kv
ルーチンは、必要な生成することができ'key1', value1, 'key2', value2, ...
、ハッシュ与えられたシーケンスを:
use Data::Printer:from<Perl5> kv { show_tied => 0 }
または:
BEGIN my %opts = show_tied => 0;
use Data::Printer:from<Perl5> kv %opts;
脚注
1この回答は、「Data :: Printer in Rakuのパラメーターの変更」SOに応じて私が開いた問題からの Stefanの説明に基づいています。
解決策はかなり単純ですData::Printer:from<Perl5> 'show_tied', 0;
。ファットコンマ=>
はPair
Rakuのコンストラクターですが、Perl 5 では単なるコンマです。Raku は(と同等)のPair
タグをインポートするために引数を使用するものと見なします。これを回避してPerl 5コードが期待するものを渡すには、値を個別にリストします。:ALL
ALL => True
言い換えると、この変換の必要性は、PerlとRaku がタグの概念(Perlのドキュメントの「タグ」 ; Rakuのドキュメントの「タグ」)を共有し、(偶然ではなく)タグを選択するために同じ構文を慣用的に使用しているためです()。:tagname
さらに、楽を使用して、(解決する必要が)のこの問題曖昧構文は、タグを指定するために使用されているかどうかの間かはに適用されるすべて Associative
のトップレベルで使用されるよuse
声明、ない形で書かれたものだけ:foo
が、書かれたものも含め以下のような他の形態においてfoo => bar
、{ foo => bar}
、%baz
、または{ %baz }
。
var
変数で誤った出力が表示されます。このパッケージはRakuで動作するようにも見えません。それは素晴らしい作品Perlで、残念だ:、(