Perl6-コメント、空白、ブラケット

昔、ハブの遠く離れた銀河に、第6真珠に関する一連の記事が登場しました

1. Perl6で変数とリテラルを操作する機能

2. Perl6-変数の操作、匿名ブロック

3. Perl6-条件付きステートメント、ループ

4. Perl6-関数を使用する

5. Perl6-クラス

6. Perl6-I / Oモジュール

Perl6のいくつかの側面について話しました。 最後の記事の後、次の1つを書き始めました.2つのクラスを作成し、それらを異なるモジュールに配置し、コンパイル段階で1つ、実行段階でもう1つを接続することを計画していました-つまり、既に渡されたマテリアルを統合するためです。 しかし、2つの関数の定義間の空行の数または条件内のスペースの数に応じて異なるコンパイルエラーが発生し始めたときの驚きを想像してください...さらに、1つのエラーを修正し、2番目のエラーを取得しました;最初の前にすでに修正しました=)その結果、次の記事を書く壊れて、私は後で安全にそれを残しました、そして、自然に、そして、自由な時間はありませんでした。

しかし、今でも同じように、私は研究を続けることにしました。そして、空白について話しているので、それらから新しい記事を始めます。





そして、開始前に、ドキュメントには、Unicode文字を識別子として使用できることが記載されていることに注意したいと思います。たとえば、Δやπですが、以前のように、この部分はまだドピリンではないか、スクリプトを実行する機能ですWindowsでも、ロシア語の文字はコメント内でのみ使用できます。 キリル文字およびその他のUnicode文字は、値または識別子として使用できませんでした。 しかし、私たちが始めたところに戻りましょう。

Perl6のコメントは、以前と同様、「#」文字で始まり、その後ろから行末までのすべてがコメントですが、これがコメントを作成する唯一の方法ではありません。

コメントを1つの長い行のサイズにしたくない場合、および列に10個の「#」文字を入れたくない場合は、次のような構成を考え出しました。

#`(comment)
      
      





このタイプのコメントの特徴は、複数行コメントであるということです。 角括弧の動作に制限され、文字「(」および「)」の代わりに、ドキュメントからコピーされたセットなど、Unicodeペア文字のセットを使用できます(ファイルがUnicodeエンコーディングで記​​述されている場合)。

 #`「 test abcd  」 say "123";
      
      





たとえば、文字「[」、「<<」、「{」および対応する終了文字を使用することも、一度にすべてを使用することもできます。

 #`[{<< Comment[index] >>}]
      
      





結果として、コメントは開始ブラケット「[」で始まり、コメント自体はセット「>>}]」でのみ終了するという事実にもかかわらず、コメント内の終了ブラケット「]」は無視されます。

コメントのもう1つの特徴は、構造を書くと

 #`{comment {some text} comment }
      
      





その後、コメント内の括弧 '{'および '}'の数がカウントされ、その結果、コメントは考えられた場所で正確に終了します。



また、コメントは空白文字であり、次の構成を記述する場合は注意が必要です。

 "text"#`(comment).say
      
      





コンパイラーは次のように認識します。

 "text" .say
      
      





したがって、postfixメソッド呼び出しを空白文字で区切ってはならないため、コンパイルエラーが発生します。 このようにすべてコメントする方法を許可するために、空白文字をエスケープするコマンドが導入されました。

 "text"\ #`(comment) .say;
      
      





空白文字のシーケンスの前のバックスラッシュ(複数ある場合があり、コメント、スペース、タブ、および空白文字のカテゴリに収まる他のすべてで構成されます)は、コンパイラが認識する行からそれらを「切り取り」、

 "text".say
      
      







コメントについては十分だから、もっと興味深いことについて話しましょう。

誰もがクォータ(qq /“ text” 123 /)などに精通しているので、このことを詳しく見ていきます(ディレクトリからデータを追加します)。



そのような式の一般的な形式は

 Q :verb /data/
      
      





as:verbは、次の名前のいずれかです。





ただし、q / test test test /またはqw / test test test /などのコマンドの古き良きバージョンは、まだ利用可能です。

それらを組み合わせることもできます、例えば

 my $result = Q :exec :double /$command/; my $sameResult = qqx/$command/;
      
      





初めに、行が補間されてから実行されます。 キーの順序が重要であることにも注意する必要がありますが、次の行が必要なため、強制することはありません

 my @results = Q :x :w /ver ver ver/
      
      





アイデアによれば、文字列「ver ver ver」は3つの単語に分割され、これらの各単語はcmdインタープリターのコマンドとして実行される必要がありますが、出力で確認したのは3つの単語「ver」の配列だけです。 おそらくあなたはこの方法を自分で試してみる必要があります。



ただし、括弧の主題に戻りましょう-上記のコマンドの場合、スラッシュだけに限定されず、実際、コメントの制限で使用したすべてをスラッシュの代わりに使用できます。

 my $result = $somePath ~~ rx!/etc/init.d/!; my $anotherResult = $somePath ~~ rx<</etc/init.d/>>;
      
      







まあ、それはおそらく今日で十分でしょう。 継続に時間がかからないことを願っています。



All Articles