我正在尝试将 C 中的宏转换为可以在 Actionscript 中类似工作的内容。
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()
{
}
}
我想引用 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;
}
}
所以我可以将 t 传递给函数,它会在 Macro 类的定义中检查它。
有没有办法让这个工作或类似的东西?
最佳答案
是的,您可以通过这种方式访问值,但您需要使用稍微不同的语法。
做:
macros[t]
不是:
macros.(t)
您可能还想考虑为此使用静态变量,这样您就不必创建 Macros 类的实例。如果这符合您的设计。
关于将 C 宏转换为 Actionscript 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3496646/