2017-08-06 9 views
8

int型の接合部に1を追加します。+と〜はなぜPerl 6ジャンクションに違った影響を与えますか?

any(2, 4, 8) 

ので、2 == any(2, 4, 8)が真である:

put any(1, 3, 7) + 1; 

は今、あなたは1増加し、それらのint型の接合部を持っています。

文字列の接合部を作成し、それらの文字列に追加します。

put any(<h H>) ~ 'amadryas'; 

あなたが等しくない「hamadryas」または「Hamadryas」を行います異なる結果を得る:

any("h", "H")amadryas 

を、私は何かを期待like:

any('hamadryas', 'Hamadryas'); 

これらの操作で異なる動作が得られる点彼らは似ている必要がありますか?

+0

最初の推測では、 '&infix:«〜»'は ':(* @ args - > Str:D)'候補を持ちますが、 '&infix:«+»'はそうではありません。 –

答えて

4

あなたが観測している~の結果は、2番目の文字列の先頭に文字列でつながれたジャンクションです。 +は、このような候補者を持っていませんが

理由は、単に引数としてジャンクションを取るslurpy候補を、持っている~あり、そしてそれはjuncts:非常に少なくとも

<Zoffix__> m: sub foo (*@a) { @a.join: '|' }; say foo <h H>.any, 'amadryas' 
<camelia> rakudo-moar a91ad2: OUTPUT: «any("h", "H")|amadryas␤» 
<Zoffix__> m: sub foo ($a, $b) { ($a, $b).join: '|' }; say foo <h H>.any, 'amadryas' 
<camelia> rakudo-moar a91ad2: OUTPUT: «any(h|amadryas, H|amadryas)␤» 

、これは一貫性のない動作であり、統一されるべきである。入れ、ハイシエラ10.13にhttps://rt.perl.org/Ticket/Display.html?id=131856

1

で失敗します:私は、このために@LARRY RTチケットを開いた

put any(1, 3, 7) + 1 

この入力できるネイティブ文字列にVHS版ではない:P6opaque、ジャンクション ブロック内の行1

perl6 -v 

これは、Perl 6.c.を実装するMoarVMバージョン2017.10 で構築されたRakudo Starバージョン2017.10です。

+0

確認と報告:https://rt.perl.org/Ticket/Display.html?id=132549 –

関連する問題