名前空間(JP)
前回はXMLの名前空間という考え方について説明した。名前空間が定義されていれば同じタグ要素であっても別ものとして扱うことができた。この名前空間の概念はActionScript3ではクラスの中にも及び、名前空間と結びつけられたクラス内の要素は同じ名前であっても別のものとして扱うことができる。
NameSpaceを定義する
クラス内に定義する場合。
package sample { public class SampleClass { // クラス内に名前空間を定義 public static namespace version1; public static namespace version2; } }
NameSpaceを指定
変数に名前空間を指定した例。ローカル変数には指定できない。
package sample { public class SampleClass { version1 var foo:int = 0; version2 var foo:int = 10; } } trace(version1::foo);//0 trace(version2::foo);//10
オープンな名前空間
名前空間を定義して変数と結びつけるところまで出来た。しかし今までのように、名前空間を指定しないで扱えないのだろうか。trace(foo)を使えるようにするには暗黙で名前空間が指定してあるように知らせておく必要がある。
trace(version1::foo);//0 use namespace version1; trace(foo);//0同じ名前の属性が複数あった場合、public関数とオープンな名前空間指定された関数では指定された関数が優先される。
public function A(){}//invoked version1 function A(){}
use namespace version1; public function A(){} version1 function A(){}//invoked