問題タブ [smartmatch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl でバインド演算子をスマートマッチ演算子に置き換えることはできますか?
スマートマッチ演算子 ( ~~
) を使用してこれをどのように記述できますか?
perl - "~~" は Perl で何を意味しますか?
draegtunは次のように返信します。
5.10.1+ から ~~ の順序が重要です。したがって、$scalar ~~ @array である必要があります
~~
次の具体的な質問を含むソースへのリンクを含む小さな入門書は~~
いかがですか。何と~~
呼ばれていますか?あるバージョンでは順序が重要であるのに、以前のバージョンでは重要でないのはなぜですか?
優れた要約では、すべての詳細が得られず、書きにくい場合があることに注意してください。紹介または入門書は~~
、この Perlism の露出を広げながら、なじみのない人にとって時間を節約するのに非常に役立ちます。
検索文字列: non-word-tilde-tilde
non-word-at-sign
.
regex - Perl のスマート マッチングを使用して一度に多くのパターンに一致させるにはどうすればよいですか?
次のコードでスマート マッチングを使用するためにいくつかの例に従おうとしましたが、失敗しました (何も除外されませんでした)。ここでスマート マッチングを使用して、一度に複数の正規表現と照合するにはどうすればよいですか?
perl - Test::More の cmp_ok でスマート マッチング ~~ を使用できますか?
配列を返す関数をテストしています。配列は環境によって異なる場合がありますが、常に少なくとも 1 つの定数値 (テストしたい値) が含まれます。
Perl 5.12 を使用しているので、smartmatch 演算子を使用して、要素が配列内にあるかどうかを確認できます。
しかし、「見つかった」部分と「期待された」部分を使用したis
andの強化された出力が気に入っています。like
だから私はこれを試しました:
cmp_ok
比較の両方の部分でスカラー を期待しているように見えるため、これは機能しません。
"expected" スロットの配列は、スカラー コンテキストで評価され、2 に変換されます。
配列を使用して文字列化するハックでこれを回避like
できますが、スマートマッチ演算子を比較方法として使用できるテストがあるwhen
とよいでしょう ( など)。Test::More または他のモジュールでこれを行う方法はありますか?
現時点で私は使用しています:
これは私ができる最善のことですか?
perl - 配列内のスカラーを検索するとき、Perl のスマートマッチ演算子はどのくらい高速ですか?
変化しない配列の値を繰り返し検索したい。
これまでのところ、私はこのようにしてきました: 値をハッシュに入れ (つまり、配列と本質的に同じ内容のハッシュを持っています)、 を使用してハッシュを検索しexists
ます。
2 つの異なる変数 (配列とハッシュ) が同じものを格納するのは好きではありません。ただし、ハッシュは検索がはるかに高速です。
~~
Perl 5.10 に (スマートマッチ) 演算子があることがわかりました。配列内のスカラーを検索するときの効率はどれくらいですか?
perl - オペランドの順序によってスマートマッチが異なる値を返すのはなぜですか?
次のテストで true が返される配列があります。
それでも、次のテストは false を返します。
Learning Perlで、スマートマッチ演算子の両側の値の配置は問題ではないことを読みましたが、明らかに上記のコードでは重要です。何故ですか?2 つのステートメントは異なるものをチェックしていますか?
regex - スラッシュを含む正規表現と照合すると、smartmatchがfalseを返すのはなぜですか?
smartmatch演算子を使用して、単純な文字列を正規表現パターンと照合しようとしています。
これで「ok」と表示されると思いますが、そうではありません。なぜだめですか?
perl - 異なるはずの配列スライスを比較するときにsmartmatchがtrueを返すのはなぜですか?
次のスクリプトは、2つの配列のスライスをスマートマッチします。最初は、両方のアレイが同じであり、妥当な結果が得られています。次に、配列の1つを変更し、2つの新しいスライスをスマートマッチングしますが、それでもスライスは同一であると表示されます。ただし、スライスを配列にコピーすると、配列をスマートマッチングすると、実際には異なることがわかります。
スクリプト:
出力:
私はPerl5.10.1を使用していますが、これは配列スライスとハッシュスライスの両方で発生します。なぜこれが起こるのですか?
perl - @arrayにLISTと同じ要素が含まれているのに、@ array ~~ LISTがfalseを返すのはなぜですか?
私は持っています
と
最初のものは私が動作することを期待しているものですが、何も印刷されません。2つ目は1を出力します。
なんで?スマートマッチング演算子~~
は、の場合に一致することになっているのではあり@a ~~ (1,2,3)
ませんか?