Преобразование макросов C в ActionScript 3 - PullRequest
1 голос
/ 16 августа 2010

Я пытаюсь преобразовать макрос в 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.

Есть ли способ заставить это работать или что-то в этом роде?

1 Ответ

2 голосов
/ 16 августа 2010

Да, вы можете получить доступ к значениям таким образом, однако вам нужно использовать немного другой синтаксис.

DO:

macros[t]

НЕ

macros.(t)

Вы также можете рассмотреть возможность использования статических переменных для этого, поэтому вам не нужно создавать экземпляр класса Macros. Если это соответствует вашему дизайну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...