一个命名空间namespace应用演示
这是一个用命名空间来控制名称相同的方法的不同实现的例子。三个命名空间string、number、array下均有一个名为print的方法,它们分别实现打印字符串、数字、数组的具体方法。有时候用命名空间也是实现方法重载的一种不错的办法。
演示代码如下:
- package {
- import flash.display.Sprite;
- public class NameSpaceExam extends Sprite{
- //打印字符串的NS
- private namespace string;
- //打印数字的NS
- private namespace number;
- //打印数组的NS
- private namespace array;
- //构造函数
- public function NameSpaceExam() {
- var str:String = "www.riaidea.com";
- var num:Number = 200802201507;
- var arr:Array = ["flash cs3", "flex3.0", "sliverlight 1.0", 2008, true];
- trace(string::print(str));
- trace(number::print(num,","));
- trace(array::print(arr));
- }
- //打印字符串
- string function print(str:String):String {
- return "String: " + str;
- }
- //打印数字,3节分段计数形式
- number function print(num:Number,sep:String=","):String {
- var str:String=String(num);
- var new_str:String="";
- var len:int=str.length;
- while(len>3){
- var tmp:String=str.slice(len-3);
- str=str.substring(0,len-3);
- new_str=sep+tmp+new_str;
- len=str.length;
- }
- return "Number: "+str+new_str;
- }
- //打印数组,枚举每个数组元素
- array function print(arr:Array):String {
- var str:String = "Array: \r";
- for (var i:int = 0, l:int = arr.length; i < l; i++) {
- str += "["+i+"]-> "+arr[i].toString()+"\r";
- }
- return str;
- }
- }
- }
输出结果为:
- String: www.riaidea.com
- Number: 200,802,201,507
- Array:
- [0]-> flash cs3
- [1]-> flex3.0
- [2]-> sliverlight 1.0
- [3]-> 2008
- [4]-> true