perl6/Rakudoには、perl5の__DATA__
または__END__
セクションに相当するものがありますか?Perl6はPerl5の__DATA__セクションと__END__セクションに相当するものをサポートしていますか?
答えて
引用S26:その型名である DATAは、Perl 5の__DATA__
部のPerl 6の等価な
名前はperldocブロック。 の違いは、= DATAブロックが の通常のPodブロックで、ソースファイル内のどこにでも 、必要に応じて と表示されることがあります。 Synopsis 2 は、 インラインデータ用の新しいPerl 6インターフェイスについて説明しています。
理論的にはあなたが(それはオフだ場合、構文を修正してください誰か)は、このような何かを行うことができるはず:Rakudoはまだ、それをサポートしていません
use v6;
=begin DATA
Foo
=end DATA
say @=DATA;
慎重に選択的に現在のS02設計文書を引用する:もはや特殊なデータストリームがありません
- ポッドオブジェクトを介してアクセスすることができます 現在のファイルのいずれかのポッドブロック...
[Podブロック]の内容を自分で行に分割する必要があります。
[投機】また、ポッド情報ライン・バイ・ラインのPerl 5のデータ ファイルハンドルのような(しかしための任意のポッドブロックを読み取るために、ハンドル:: IOとしてポッド対象を治療することも可能です)。
ので、代わりにあなたはファイルハンドルを読むことによって、アクセス、ファイルごとに単一の、DATAセクションでは、スクリプト・ファイル内のポッド・ブロックの任意の数を定義します。コンパイル時に変数$=pod
に格納されます。あなたはその変数から読みます。 「データ」と呼ばれるものはPerl 5のDATAの同等物です。
これは今日では動作します。私はそれを一瞬で見せます。しかし、まず、今日はうまくいかないことについて話す必要があります。
上記の引用は非常に選択的でした。省略されたテキストは、名前が 'foo'のPodブロックに対応する形式の名前が$=foo
の変数を自動的に作成するP6について話しました。これは、データブロックだけでなく、ポッドブロックの一般的に未実装の機能です。
ポッドデザインの文書S26の「データブロック」セクションでは、普通の古いPodブロックよりも面白いものをやっているデータブロックについて語っています。これはまだ実装されていません。
だから、今今日は何ができるかに移りましょう:
=foo This is a Pod block. A single line one. This Pod block's name is 'foo'.
=begin qux
This is another syntax for defining a Pod block.
It allows for multi line content.
This block's name is 'qux'.
=end qux
=data A data block -- a Pod block with the name 'data'.
# Data blocks are P6's version of P5's __DATA__.
# But you can have multiple data blocks:
=begin data
Another data block.
This time a multi line one.
=end data
$=pod.grep(*.name eq 'data').map(*.contents[0].contents.say);
この版画:
A data block -- a Pod block with the name 'data'.
Another data block. This time a multi line one.
だから、それはみかん動作します。しかし、はるかに多くの砂糖が明らかに必要です。回避策これは完全に実装されるまで、あなたはヒアドキュメントを使用することができるよう
for @$=pod {
if .name eq 'data' {
say .contents[0].contents
}
};
:ところで
は、最後のFPスタイルのラインが意味をなさなかった場合、ここでは不可欠と同等です。
for data().lines -> $line {
put $line;
}
sub data {
return q:to/END/;
Foo, bar, baz
1, 2, 3
END
}
出力
Foo, bar, baz 1, 2, 3
- 1. 新しいDOMNodeInsertedに相当するものは何ですか?
- 2. gitはsvnのペグリビジョンに相当するものを持っていますか?
- 3. PHPのサブプロセスに相当するものはありますか?
- 4. GCCのstdcallに相当するものはありますか?
- 5. Tomcatのmod_statusに相当するものはありますか?
- 6. AjaxMinTaskのコマンドラインパラメータに相当するものはありますか?
- 7. PerlのSonarに相当するものはありますか?
- 8. タイムスタンプのLAST_INSERT_IDに相当するものはありますか?
- 9. Play 1.2の@Beforeと@Afterに相当するPlay 2.0に相当するものは何ですか?
- 10. Java用ソースアウトライナーに相当するものはありますか?
- 11. Git:hgストリップに相当するものはありますか?
- 12. C#:JTableに相当するものはありますか?
- 13. SQL Server:strpos()に相当するものはありますか?
- 14. gluScaleImage関数に相当するものはありますか?
- 15. SQLスクリプト - #defineに相当するものはありますか?
- 16. rubyは、列挙可能なmap_consメソッドまたはそれに相当するメソッドをサポートしていますか?
- 17. PHPと.NETのデータセットに相当するものはありますか?
- 18. WinformとASP.NETのWPF OriginalSourceイベントプロパティに相当するものはありますか?
- 19. Pythonのfile_put_contentsとiconvに相当するものはありますか?
- 20. Java/Androidに#IFと#CONST .NETに相当するものはありますか?
- 21. MASMの_emitに相当するもの
- 22. Juliaのgetattr()に相当するもの
- 23. PHPの 'implode'に相当するもの
- 24. boto3のboto.exception.BotoServerErrorに相当するもの
- 25. VB.NETのProgram.csに相当するもの
- 26. NSDocumentのviewWillAppearに相当するもの
- 27. iOSのonDrawに相当するもの
- 28. WPFの "OnIdle"に相当するもの
- 29. UWPの `System.Drawing.Drawing2D`に相当するもの
- 30. AndroidのOnInputListenerに相当するもの
残念ながらRakudoはそれらをまだ実装していません。 – moritz
2016年後半にRakudoがサポートしているのは、[もっと最近のこの質問に対する回答](http://stackoverflow.com/a/27936867/1077672)です。 – raiph