名前空間
Flex(というかActionScript3)では、メソッドやフィールドに名前空間を設定できます。
名前空間の作成
namespace <名前空間名> = "<名前空間URI>";
で作成します。
以下は、公開ネームスペースの例。
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で使われていて(それで初めて知った)、そこはまぁ納得できるんだけど、他の使い道があるかというといまいち思いつきません。うーん。メソッドにプリフィクスとかサフィクスつければよくね?