1. ホーム
  2. スクリプト・コラム
  3. パール

Perlでは ->;, =>;, :: という記号はどういう意味ですか?

2022-01-03 18:13:53

記号「->」「=>」「 :: 」はどういう意味ですか?

  は、quot;infix dereference operator"です。つまり、参照渡しでサブを呼び出すためのものです(->でできることは他にもあります)。上記のように、Perl/Tkルーチンの呼び出しでは、ほとんどのものが参照渡しとなります。perlでは->はCやC++と同じように使用されます。(ほとんどのウィジェットプリミティブは Tk:: "perl クラス" の要素です。) デリファレンスの簡単な例は次のようになります: $x = { def => bar }; # $x は anon. ハッシュへの参照 print $x->{def},"/n"; # prints ``bar''.

  perl/Tkのサブを呼び出す場合、参照で呼び出す方法が1つではない場合があることに注意してください。 compare my($top) = MainWindow->new;

  を my($top) = new MainWindow とします。

  しかし、一般的には次のような呼び出しを多用することになるでしょう。$top -> Widge型です。

  参照、非参照、そしてクロージャについては man perlref(1) に明確かつ簡潔な説明がありますし、 http://www. metronet.com/perlinfo/perl5.html の perl 5 情報ページも参照してください。

  perl/Tk スクリプトでは => 演算子の使用は非常に一般的です。

  =>ダイグラフは、コンマ演算子の同義語です。これは、ペアで来る引数をドキュメント化するのに便利です。

  美観や整理整頓のために=>が使われていると言えるでしょう。以下の例では、すべての-オプションが引数を持つかどうかを追跡するのがいかに難しいかに注目してください: $query -> Button(-in,/$reply,-side,'left',-padx,2m,-pady, 2m,-ipadx,2m,-ipady,1m)->pack(-side,'bottom');

  とは対照的です。$query ->Button( -in => /$reply, -side => 'left', -padx => 2m, -pady => 2m, -ipadx => 2m, -ipady => 1m )->pack(-side => 'bottom') といった具合です。

  ちなみに、数値のquot;大なり小なりが欲しければ、>= not =>を使うことになります。

  記号はC言語の構造体のピリオドと同じように考えることができますが、C++の::クラススコープ演算子の方がずっと似ています。 c; /* C言語の何か */ a::b::c(); // C++の関数 $a::b::c; # Perl 5のスカラー @a::b::c; # Perl 5のリスト %a::b::c; # Perl 5の連想配列かハッシュ &a::b::c; # Perl 5の関数

  また、Perl 4 のシングルフォワードクオーテーションマークとも類似しています: $main'foo; # Perl 4 の $foo スカラー $main::foo; # Perl 5 の $foo スカラー

  後方互換性のため、Perl 5 では $main'foo を参照できますが、$main::foo が推奨されます。

  翻訳してください。

  記号の->、=>、 :: はそれぞれどのような意味ですか?

  記号は、"infix dereference operator"の略で、「- >」という記号です。つまり、引数を参照渡しするサブルーチンを呼び出すためのものです(もちろん、他のものにも当てはまります)。前述したように、Perl/Tkの関数を呼び出す場合、ほとんどの引数は参照渡しになります。Perlの'->関数は、CやC++の関数と同じです。(元のコンポーネントのほとんどは、TkのPerlクラスの要素です。) 以下は、デリファレンスの簡単な例です。

  x = { def => bar }; # $x は匿名ハッシュへの参照です。

  print $x->{def},"/n"; # 出力 ``bar''

  Perl/Tkのサブルーチンを呼び出す際に、いくつかの異なる参照方法があることに注意してください。比較することができます。

  my($top) = MainWindow->new;

  そして

  my($top) = new MainWindow;

  2つのメソッドの違い

  しかし、一般的にはこのようなメソッド呼び出しは通常

  $top -> Widgeon型です。

  参照、非参照、クロージャについては、perlrefのマニュアルページや、Perl5の情報ページで詳しく説明されています。

  http://www.metronet.com/perlinfo/perl5.html

  Perl/Tkのスクリプトでは「=>」演算子がよく使われています。perlopのマニュアルページによると、関係演算子=>は単なるカンマ演算子の代替で、引数のペアを表示するときに便利なのだそうです。

  =>は、プログラムの美観とメンテナンスのしやすさのためだけに使われていると考えてよいでしょう。次の例で、各オプションが対応する値を持っているかどうかを監視することがいかに難しいかを見てください。

  $query -> Button(-in,/$reply,-side,'left',-padx,2m,-pady.Button) -> Button(-in,/$reply,-side,'left',-padx,2m,-pady,

  2m,-ipadx,2m,-ipady,1m)->pack(-side,'bottom');

  次のものは、その逆です。

  $query ->Button( -in => /$reply,

  -side => '左',

  -padx => 2mです。

  -pady => 2m。

  -ipadx => 2mです。

  -イパディ => 1m

  )->パック(-side =>「底」)。

  ちなみに、数値の "以上"表記が必要な場合は、"=>"ではなく、">="を使用する必要があるそうです。

  この表記は、C言語の":"に似ていると考えることができ、C++の::クラスの範囲演算子に似ています。

  a.b.c; /* C言語では *.

  a::b::c(); // C++の関数

  Perl 5 ではスカラ。

  a::b::c; # Perl 5 のリスト

  Perl 5 の %a::b::c; # 連想配列(またはハッシュ)

  &a::b::c; # Perl 5 の関数

  また、Perl 4のシングルアポストロフィも同じ機能を持っています。

  Perl 4 のスカラー $foo; # スカラー $main'foo

  Perl 5 では、$main::foo; # スカラー $foo です。

  Perl 5 では後方互換性の理由から $main'foo も実行されますが、やはり $main::foo を使用することが推奨されます。