2010-08-16 86 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