Perl 5のスマートマッチ演算子が壊れていると見なされるのはなぜですか?[閉まっている]


17

私は、Perlのスマートマッチ演算子が壊れているというウェブ上で多くのコメントを見てきまし。元々はPerl 6の一部であり、古いバージョンの仕様からPerl 5.10で実装され、その後5.10.1で現在のPerl 6仕様と一致するように修正されたことを知っています。

この問題は5.10.1以降で修正されていますか、それとも実際に面倒なスマートマッチ演算子に他の問題がありますか?

問題は何ですか?

問題を修正する、さらに更新されたバージョン(おそらくPerl 6)がありますか?

編集:明確にするために、私はバグについてではなく、意図された動作~~が悪いという意見を聞いています。


SOの方が良いのではないでしょうか?

3
だから、最近のコードスニペットでは答えられない質問を嫌っているようです。
ショーンマクミラン

2
私はそれがSOに属しているとは思わない、それはPerlのスマートマッチ演算子が壊れていると考えられる理由の概念的な説明を求めている。
ヤニス

1
あなたのリンクで私が見たものから、スマートマッチは再帰的である(またはそうだった)ように見えるので、配列が(おそらく間接的に)自分自身への参照を含んでいるという理由だけで無限再帰につながる可能性があります。
user281377

2
@SeanMcMillan-最近は多くのことが嫌いです:/
ルーク

回答:


14

given/whenlexicalの問題など、smartmatch演算子で発生する問題と構造で発生する問題を混同することがよくあります$_

私は、リテラルでのみsmartmatch演算子を使用すれば、気が狂わないという意見になりました。他の状況については約束できません。何$a ~~ $bをしているのかを理解しようとすれば、まともな人間を狂気のなかで叫び走らせ、別のプログラミング言語を完全に取り入れるのに十分です。

あるいは、少なくとも、Perlプログラミングの第4版のsmartmatchセクションを編集していたときにLarryから得たものです。


4

スマートマッチ演算子は「壊れた」ものではありませんでしたが、多くのバグがありました。Perl v5.12はそれを修正し、Perl v5.14はそれを完璧に仕上げました。したがって、あなたの質問に答えるために、Perl v5.12以降はこの問題を修正します。Perl v5.10のそれ以降のバージョンで試すことができますが、Perl 5.12+でより良く機能することを知っています。

編集:編集内容については、このブログをご覧ください。記事を読んだ後、あなたの質問に十分に答えたと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.