問題タブ [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 - @array ~~ $number が @array == $number と異なるのはなぜですか?
Programming Perlによると、左側に「any」、右側に数値を指定してスマートマッチを使用すると、数値の等価性がチェックされます。
したがって、次の出力が期待されます1
。
しかし、実際には空の文字列を出力します。
要素が1つなので@arr
スカラーに変換されると思っていたので、と同等です。1
say @arr ~~ $num
say @arr == $num
@arr ~~ $num
が と異なるのはなぜ@arr == $num
ですか?
perl - 左側の配列参照を逆参照するときにスマートマッチが機能しないのはなぜですか?
私は現在、O'Reilly からIntermediate Perlを読んでいて、演習の 1 つを実行しようとしています。私は Perl での参照に慣れていないので、何かを誤解したり、この演習を間違ってコーディングしたりしていないことを願っています。
ただし、このコードをデバッグしようとしましたが、スマート マッチングの行が毎回どのように失敗するかについて結論を出すことができません。私が理解していることから@array ~~ $scalar
、文字列単位のスカラー値が@array
.
以下は私のコードです:
regex - Perl: smartmatch op を使用して、値の配列に対して文字列を検索します
応答ヘッダーのような文字列を考えてみましょう: HTTP/1.1 404 Not Found
.
スマートマッチ (~~
または二重チルダ) 演算子と正規表現の組み合わせを使用して、一致の不完全またはサブセットを検索できるかどうか知りたいです。
これは、ある種のループ、grep、またはマップで実行できることを知っています。~~
しかし、できることとできないことの可能性を調べています。
ドキュメントはかなり説明的であり、lhs/rhs 条件の大部分では、[左側のすべて] == [右側のすべて]評価に対して true を返すようです。
とはいえ$head
、 が数字 (例: $head=q{200}
) であれば一致します。
期待される結果は次のようになります。
perl - Perl 5.20 とスマートマッチングと given-when の運命
Perl 5.18 をインストールしたところ、次のような警告がたくさん表示されます。
これらの警告 (どこにも言及されているのを聞いたことがない) を調べると、これは 2 か所でしか見つかりませんでした。
- perldelta for 5.18 、これは機能が実験的にダウングレードされたと言う限り、実際に言及しているだけですか?
- この nntp.perl.org の投稿
Perl Delta は、これらの機能で何が起こっているかについて言及するために依然として最も多くのことを行っています。ポッドに半分埋もれていて、
v5.10.0 で追加され、v5.10.1 で大幅に改訂されたスマート マッチは、常に苦情の対象となっています。便利な方法はたくさんありますが、Perl のユーザーと実装者の両方にとって問題があり、混乱を招くことも証明されています。この問題にどのように対処するのが最善かについて、多くの提案がなされてきました。スマートマッチが将来変更されるか、なくなることはほぼ確実です。現在の動作に依存することはお勧めしません。パーサーが ~~、given、または when を見たときに警告が発行されるようになりました。
過去 10 年間の Perl での最も重要な変更がどのように実現されたのか、私は混乱しています。given
、when
、およびをあちこちで使い始めましsmartmatch
た。これらの先物について、これ以上の情報はありますか? それらを「混乱させている」と感じる人はいますか?これらの機能はどのように変化する可能性がありますか? これらの機能をモジュールで実装する計画はありますか?
perl - キー %h に対するスマートマッチが失敗し、「引数が数値ではありません」という警告が表示されるのはなぜですか?
次のコードで、最初のスマートマッチが一致に失敗して警告が表示Argument "two" isn't numeric in smart match
されるのに、2 番目のスマートマッチが期待どおりに機能する (一致する) のはなぜですか?
私はただ使うことができることに気づきました
しかし、最初のスマートマッチが期待どおりに機能しない理由を知りたいです。Perl 5.10.1 を使用しています。
perl - Perl の Smart Match での構文コンパイルの問題?
誰かが私を助けてくれることを望んでいた古いバージョンの perl で私の perl スクリプトをコンパイルする際に問題が発生しているようです。私が最初に書いて問題なく perl ファイルをコンパイルしたシステムは perl v5.16.3 を使用しており、現在コンパイルして実行しようとしているシステムは perl v5.8.5 を使用しており、そこに問題があると思います。~~ の使用方法に関して、v5.10 で多くの変更が行われたことは知っています。~~ 演算子を実際に使用した最初のバージョンは v5.10 ですか?
以下は、構文エラーが発生しているコードです。
これは私が得ているエラーです:
これは周囲のコードなので、何が起こっているのかをよりよく理解できます。
基本的に、ハッシュのハッシュがあり、基本的にステートメントが一致しない場合は、ハッシュから削除されます。サーバー上の perl をアップグレードしようとしていますが、まだ承認を得ようとしています。これは、使用されている perl バージョンが原因であると想定して正しいですか?
ありがとうございました。