ActionScript:相当于Python的`repr`(即对象的有用字符串表示)?

时间:2010-02-17 20:09:07

标签: flex actionscript repr

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 个答案:

答案 0 :(得分:1)

AFAIK没有任何快速简单的一行命令可以做你想要的,但这是一种方法,直接来自Adobe我可能会添加

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

答案 1 :(得分:0)

这是remotley唯一关闭的事情:

valueOf ()

public function valueOf():Object

语言版本:ActionScript 3.0 运行时版本:AIR 1.0,Flash Player 9

返回指定对象的原始值。如果此对象没有原始值,则返回对象本身。

注意:Object类的方法是在Object的原型上动态创建的。要在Object的子类中重新定义此方法,请不要使用override关键字。例如,Object的子类实现函数valueOf():Object而不是使用基类的覆盖。

返回     Object - 此对象或对象本身的原始值。

答案 2 :(得分:0)

您可以尝试使用ObjectUtil.toString函数,它不是您想要的,但我认为您不会发现任何更接近您想要的内容,因为它的函数被描述为“将指定的对象打印成字符串“,这就是它的作用,但保留了你想要的更多信息。由于Array是一个复杂的数据对象,这就是为什么它会像那样注释它。

    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

答案 3 :(得分:0)

是的我知道你想要什么,解决方案非常简单,使用JSON对象来完成它!

例如:

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

试试吧!

了解详情,请访问here