22

SO の回答では、ダキシムは次のように述べています。

@array ~~ $scalar is true when $scalar is in @array

draegtunは次のように返信します。

5.10.1+ から ~~ の順序が重要です。したがって、$scalar ~~ @array である必要があります

~~次の具体的な質問を含むソースへのリンクを含む小さな入門書は~~いかがですか。何と~~呼ばれていますか?あるバージョンでは順序が重要であるのに、以前のバージョンでは重要でないのはなぜですか?

優れた要約では、すべての詳細が得られず、書きにくい場合があることに注意してください。紹介または入門書は~~、この Perlism の露出を広げながら、なじみのない人にとって時間を節約するのに非常に役立ちます。

検索文字列: non-word-tilde-tilde non-word-at-sign.

4

4 に答える 4

27

「あるバージョンでは順序が重要であるのに、以前のバージョンではそうではない理由」と具体的に答えてください。そのため、セマンティクスは 5.10.1 で変更され、今後のすべてのバージョンでは 5.10.0 バージョンが存在しなかったものとして扱われます。

スマート マッチの 5.10.1 以降のバージョンでは、左側のオペランドと右側のオペランド~~は常に別個に扱われます。正規表現一致演算子と同様=~に、左側は一致の「対象」であり、右側は一致する「パターン」です。それが単純なスカラー、正規表現、配列、またはハッシュ参照のいずれであっても、コード参照など。詳細は perlsyn でかなり詳しく説明されています。

5.10.0 のセマンティクスに依存するコードを既に作成していない限り、5.10.0 バージョンについてまったく心配する必要はありません (その場合は、5.10.1 を要求するようにコードを書き直す必要があります。 perl の将来のバージョン)。

于 2010-06-22T16:24:22.523 に答える
19

スマートマッチ、参照perldoc perlsyn

コメントの要求に従って、もう少し説明します:スマート マッチは、引数の型だけを知っている等値テストを理解しようとする任意のデータ型の演算子です。多くのテストでは、次のような複雑な操作が必要です。反復と正規表現の適用

于 2010-06-22T16:09:24.790 に答える
5

スマートマッチ演算子です 。

一般に、Perl の演算子に関する情報が必要な場合は、 perldoc perlopを参照してください。

于 2010-06-22T16:11:28.717 に答える
5

(Learn Perl から盗用): バイナリ "~~" は、その引数間でスマート マッチを行います。

http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail

それは何をするためのものか?主に、提供される引数のタイプに「依存します」。上にリンクされたページには、バリエーションが何であるかについての耐え難いほどの詳細があります.

于 2010-06-22T16:11:03.133 に答える