получить строковое представление имени переменной в as3 - PullRequest
1 голос
/ 09 декабря 2011

любой способ сделать это - as3?

например, если у меня есть var dog:String, как я могу получить "собаку" из этой переменной?

Глядя на размышления, чтобы сделать это, но должен быть более простой способ

- A

Ответы [ 4 ]

3 голосов
/ 09 декабря 2011

Надеюсь, это поможет.

class A {
   var dog:String = "something";
   var cat:String = "eatdog";
}

function getVars(obj:*):void
{
    for(var i:* in obj){
        trace( i + " : " + obj[i]);
        // this will trace all properties of object.
        // dog : somthing
        // cat : eatdog
    }
}
1 голос
/ 09 декабря 2011

Звучит так, как будто вы не хотите «получать» строковое представление имени переменной, а просто установить переменную на основе строки.

Чтобы установить переменную, имя которой у вас есть в виде строкиВы можете сделать это:

this['dog'] = 'value of the dog var';
1 голос
/ 09 декабря 2011
  • Прежде всего, если это экземпляр пользовательского класса, вы можете переопределить метод toString().

  • Если это свойство класса, вы можете использовать этот метод - https://stackoverflow.com/posts/3781635/revisions

  • Если это локальная переменная, получить это имя невозможно.

0 голосов
/ 09 декабря 2011

В вашем примере я не думаю, что есть способ получить "собаку" как строку.

Однако, если dog является свойством объекта dynamic, вы можете использовать функцию, подобную этой:

function getVarName(subject:*, value:*):String
{
    for(var i:String in subject)
    {
        if(subject[i] == value) return i;
    }

    return "";
}

Эта функция может работать в сценарии, подобном этому:

var holder:Object = {
    dog: "some awesome dog"
}

trace(getVarName(holder, "some awesome dog")); // dog
...