スコープ解決演算子

フリー百科事典ウィキペディアより
ナビゲーションにジャンプ 検索にジャンプ

コンピューター プログラミングではスコープは、が関連付けられている囲みコンテキストです。スコープ解決演算子は、特に名前空間を指定することにより、識別子が参照するコンテキストを識別して指定するのに役立ちます特定の使用法は、スコープの概念により、プログラミング言語によって異なります。多くの言語では、スコープ解決演算子は と書かれています。 ::

一部の言語、特にModula-3 ( PythonおよびGoを含む) の影響を受けた言語では、モジュールはオブジェクトであり、モジュール内のスコープ解決は通常のオブジェクト メンバー アクセスの特殊なケースであるため、通常のメソッド演算子.がスコープ解決に使用されます。他の言語、特にC++Rubyは、さまざまな方法で相互作用するスコープ解決とメソッド アクセスの両方を備えています。以下の例を参照してください。

C++

クラス A { 
公開:
    静的int i ; // A のスコープ};   


名前空間B {  
    int c = 2 ;   
} // 名前空間 B 

int A :: i = 4 ; // スコープ演算子は、クラス A で宣言された整数 i を参照しますint x = B :: c ; // スコープ演算子は名前空間 B で宣言された整数 c を参照します    
    

PHP

PHPでは、スコープ解決演算子はPaamayim Nekudotayim (ヘブライ語: פעמים נקודותיים[paʔaˈmajim nekudoˈtajim]と発音 ) とも呼ばれ、ヘブライ語で「二重コロン」を意味するנקודתיים の口語的な堕落である 2 番目の単語は[nekudaˈtajim]と発音 します。

「Paamayim Nekudotayim」という名前は、イスラエルが開発した[1] PHP 3で使用されるZend Engine 0.5で導入されましたヘブライ語を話さない多くの開発者を混乱させてきましたが、次のサンプル エラー メッセージのように、PHP 7 でも使用されています。

$ php -r ::
解析エラー: 構文エラー、予期しない T_PAAMAYIM_NEKUDOTAYIM

同様のエラーは、スコープ解決演算子が存在しない場合にも発生する可能性があります。たとえば、定数が empty() かどうかを確認しようとすると、次のエラーが発生します。

$ php -r 'define("foo", "bar"); if (empty(foo)) echo "空";' 
解析エラー: 構文エラー、予期しない ')'、T_PAAMAYIM_NEKUDOTAYIM が必要です

PHP 5.4 の時点では、スコープ解決演算子に関するエラー メッセージにはまだこの名前が含まれていますが、その意味がいくらか明確になっています。

$ php -r ::
解析エラー: 構文エラー、予期しない '::' (T_PAAMAYIM_NEKUDOTAYIM)

次の無効な PHP 式を使用しようとするなど、あまり明白ではないエラーをトリガーする方法が他にもあります。

$ php -r static const '$a=1'
解析エラー: 構文エラー、予期しないファイルの終わり、予期: :: (T_PAAMAYIM_NEKUDOTAYIM)

ルビー

Rubyでは、moduleキーワードを使用してスコープ解決を指定できます

モジュールの 
  バージョン =  1 0

  class  <<  self  # モジュールのシングルトンにアクセスしています class 
    def  hello ( who  =  "world" ) 
      "Hello #{ who } " 
    end 
  end 
end  #/Example

:: hello  # => "Hello world"
. こんにちは "ハッカー"  # => "こんにちはハッカー"

::バージョン # => 1.0
. バージョン 番号 NoMethodError

# これは、Ruby のメッセージ (.) 演算子とスコープ演算子の違いを示しています (::) 
# ::hello と .hello の両方を使用できます。なぜなら、hello は例のスコープの一部であり、例は
# メッセージに応答するためです。こんにちは。
# 
# バージョンは Example のスコープ内にあるため、::Version と .Version で同じことを行うことはできませんが、
応答するメソッドがないため、 # Example はメッセージ Version に応答できません。

スコープは、変数名の前にある シジルの影響も受けます。

参考文献

  1. ^ "スコープ解決演算子" . PHP 5 マニュアル. 2007 年8 月 9 日閲覧

外部リンク