2010-08-16 75 views
1

我试图将C中的宏转换为在Actionscript中类似工作的东西。将C宏转换为ActionScript 3

C宏接受一个字符串,并使用##检查其他宏的类型以检查该项目的属性是否是正确的类型。

为了澄清,在C:

... 
#define STACK_NUM  52 
... 
#define CHECK_TYPE(i, t)  \ 
(((i).type == t##_NUM))  \ 

我想这个转换成相同的东西的Actionscript。我这样做目前的方法是创建一个类

public class StringMacro extends String { 
    public var macro:int; 

    public function 
    StringMacro(value:int) 
    { 
     super(); 
     macro = value; 
    } 
} 

和定义的所有宏在C中的这个类的变量,但是这占用了大量的空间,我真的不想这样做这条路。

所以,我想出了是这样的:

public class Macros { 
    ... 
    public var STACK_NUM:uint = 52; 
    ... 

    public function 
    Macros() 
    { 
    } 

} 

我要引用宏类做这样的事情:

private var macros:Macros = new Macros(); 
if(CHECK_TYPE(10, STACK))  
    .... 

private function 
CHECK_TYPE(value:int, t:String):Boolean 
{ 
    if(value == macros.(t)) { 
     return true; 
    } 
} 

所以我可以通过牛逼到函数它会在Macro类的定义中检查它。

有没有办法让这项工作或类似的东西?

回答

2

是的,你可以通过这种方式访问​​值,但你需要使用稍微不同的语法。

DO:

macros[t] 

NOT:

macros.(t) 

您也可以考虑使用静态瓦尔对于这一点,所以你不必创建宏类的一个实例。如果这符合你的设计。

+0

感谢泰勒,静态的想法是我需要的确切的东西。 – David 2010-08-16 21:08:57

相关问题