ActionScript: эквивалент Python `repr` (т. Е. Полезное строковое представление объекта)? - PullRequest
2 голосов
/ 17 февраля 2010

Функция Python repr великолепна: она возвращает печатаемое представление объекта.

Например, repr(["a'b", {1: 2}, u"foo"]) - это строка '["a\'b", {1: 2}, u\'foo\']'.Обратите внимание, например, как правильно экранировать кавычки.

Итак, есть ли что-то подобное для ActionScript?

Например, прямо сейчас: [1, 2, ["3", "4"]].toString() создает строку "1,2,3,4" ... Что на самом делене очень полезноЯ хотел бы, чтобы он генерировал строку типа ... Ну, '[1, 2, ["3", "4"]]'.

Я рассмотрел вопрос об использовании библиотеки JSON ... Но это далеко не идеально, потому что он попытается сериализовать экземпляры произвольных объектов, которые яне очень хочу.

Ответы [ 4 ]

1 голос
/ 18 февраля 2010

AFAIK, нет какой-либо быстрой и простой однострочной команды, которая делает то, что вы хотите, но вот способ сделать это, прямо из Adobe, я мог бы добавить

http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html

0 голосов
/ 20 июля 2014

Да, я знаю, что вы хотите, решение довольно простое, используйте JSON объект для его завершения!

Например:

trace(JSON.stringify('hello'));
trace(JSON.stringify(['yet', 'another']));
trace(JSON.stringify({hello: 'world'}));

Попробуй!

Подробнее об этом, пожалуйста, посетите здесь .

0 голосов
/ 18 февраля 2010

Вы можете попробовать функцию ObjectUtil.toString, это не совсем то, что вы хотите, но я не думаю, что вы найдете что-то ближе к тому, что вы хотите, так как его функции описываются как "Pretty-печатает указанный объект в строку . ", что делает, но хранит гораздо больше информации, что вы хотели бы. Массив является сложным объектом данных, и поэтому он так аннотирует его.

    var a:Array = [1, 2, ["3", "4"]];
    trace (ObjectUtil.toString(a));
    // returns
    // (Array)#0
    //  [0] 1
    //  [1] 2
    //  [2] (Array)#1
    //    [0] "3"
    //    [1] "4"

Мне интересно, как бы repr обработал этот пример:

    var a:Array = [0,1,2];
a.push(a);                  
trace (ObjectUtil.toString(a));
    // returns
    // (Array)#0
    //   [0] 0
    //   [1] 1
    //   [2] 2
    //   [3] (Array)#0
0 голосов
/ 17 февраля 2010

Это единственное, что ремотлей близко:

valueOf ()

открытая функция valueOf (): Object

Языковая версия: ActionScript 3.0 Версии среды выполнения: AIR 1.0, Flash Player 9

Возвращает примитивное значение указанного объекта. Если этот объект не имеет примитивного значения, возвращается сам объект.

Примечание. Методы класса Object динамически создаются на прототипе Object. Чтобы переопределить этот метод в подклассе Object, не используйте ключевое слово override. Например, подкласс Object реализует функцию valueOf (): Object вместо использования переопределения базового класса.

Возвращает Объект - примитивная ценность этого объекта или самого объекта.

...