[perl6] done が done-testing に変わる
変わるってことで、まあ Perl6 が正式リリースされる前だからいいんだが、Perl6 のコードを取り出すにはどうすりゃいいんだってことになって、soozy.slack で話題になっていた。
https://github.com/rakudo/rakudo/commit/268ca0802e6106de2880ddf28bfcfe9e2d3b1bc9
最近、Perl6 は、リリースにむけてdeprecatedなコードの整理などが行われており、ガンガン deprecated 扱いで温存されてたものが削除されていっている。 というわけで、今日を生きるためのワークアラウンドとして以下のパターンを僕がひねり出した。
perl6-m -e 'use Test; { EVAL "done-testing"; CATCH { default { done; } } }’
Perl5 なら
__PACKAGE__->can(‘done-testing’) or ev " “sub done-testing { done }"
とかで一発なのにな〜と #perl6 でぼやいていたら、FROGGS氏が以下のコードを提示してくれた。
use Test; &::('done-testing') ?? &::('done-testing')() !! &::('done')()
なるほど!これはすなわち Perl5 でいうところの
perl -E 'use Test::More; *::done_testing{CODE} ? *::done_testing{CODE}->() : *::done{CODE}->()’
と同じことであり、なるほど Perl らしくてわかりやすいコードなのであった。
最近、Perl6 に関する雑談を http://soozy.fushihara.net/ で行っており、#perl6 チャンネルで活発な議論が行われているんで、興味ある人はご参加ください。
Published: 2015-09-28(Mon) 17:28