読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

名前空間

Flex

Flex(というかActionScript3)では、メソッドやフィールドに名前空間を設定できます。

  • 名前空間を設定されたメソッドは、名前空間を明示(またはuse)して呼び出す必要があります。
  • publicやprivateといったアクセス制御指定子も特殊な名前空間として実装されているらしい。

名前空間の作成

namespace <名前空間名> = "<名前空間URI>";

で作成します。

  • 名前空間URI省略可
  • 外部に公開するネームスペースは、パッケージ宣言内でpublicとして定義します。
    • この場合、ネームスペースを定義するためだけに1ファイル必要です。(めんどいなー。)

以下は、公開ネームスペースの例。

package com.example {
  
  // ネームスペースの作成
  public namespace ns_foo;
}

名前空間付きメソッドの作成

publicとかとおなじ感じで個々のメソッドやフィールドに設定します。

package com.example {
	
  public class Foo {
    
    // 普通の関数
    public function func():String {
      return "0"
    }
    
    // ネームスペース付き関数1
    // 別のネームスペースに属するので同じ名前でもOK 
    // ただし、実行時には必ずネームスペース付きで呼び出さないとエラーになる
    ns_foo function func():String {
      return "1"
    }
    // ネームスペース付き関数2
    ns_foo function func2():String {
      return "2"
    }
    // ネームスペース付き変数
    ns_foo var var1:String = "var1"
  }
}

名前空間付きメソッドを呼び出す。

名前空間付きメソッドを実行する場合、

<オブジェクト>.<ネームスペース>::<関数>(...)

として明示的に名前空間を指定して呼び出すか、

use namespace <ネームスペース>;

とすると、以降そのコードブロック内では名前空間の指定なしでメソッドを呼び出すことができます。

// メソッドを実行する場合、
//「<オブジェクト>.<ネームスペース>::<関数>(...)」
// の形式で実行する
var f:Foo = new Foo( );

f.ns_foo::func(); // 1
// publicな関数を呼び出す場合、ネームスペースは通常省略できるが、
// 他のネームスペースの関数と名前が競合している場合、明示的に指定が必要。
f.public::func(); // 0

// もしくは
// 「use namespace <ネームスペース>;」
// をすると、ネームスペースの指定なしで呼び出せる
use namespace ns_foo;
f.func2(); // 2
f.var1;
// useする場合も他のネームスペースの関数と名前が競合しているのであれば、
// 明示的に指定が必要。
f.ns_foo::func(); // 1

使い道

正直わからん。ActionScriptのライブラリ中ではflash.utils.Proxyで使われていて(それで初めて知った)、そこはまぁ納得できるんだけど、他の使い道があるかというといまいち思いつきません。うーん。メソッドにプリフィクスとかサフィクスつければよくね?

参考:Adobe Flex 3 ヘルプ - 名前空間