加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – AS3可以返回两种类型的方法的最佳实践

发布时间:2020-12-15 07:21:57 所属栏目:百科 来源:网络整理
导读:我一直在为ActionScript 3开发一个框架,并且遇到了一个特殊的场景,我希望一个方法能够返回一个AvFrameworkObject或一个包含多个AvFrameworkObject实例的Array. 使用此方法用于注册AvFrameworkObject的一个或多个实例: public function register(...objects)
我一直在为ActionScript 3开发一个框架,并且遇到了一个特殊的场景,我希望一个方法能够返回一个AvFrameworkObject或一个包含多个AvFrameworkObject实例的Array.

使用此方法用于注册AvFrameworkObject的一个或多个实例:

public function register(...objects):Object
{
    var reg:Array = [];

    var i:AvFrameworkObject;
    for each(i in objects)
    {
        i.fw = this;
        reg.push(i);
    }

    return reg.length > 1 ? reg : reg[0];
}

以上几点:

>这对我来说似乎非常草率.是真的吗?
>我也可以使用通配符(星号*)作为返回类型,这更有意义吗?
>是否可以实际定义两种返回类型?只是为了便于阅读等

解决方法

据我所知,所有对象都通过 by reference:

In ActionScript 3.0,all arguments are passed by reference,because all values are stored as objects. However,objects that belong to the primitive data types,which includes Boolean,Number,int,uint,and String,have special operators that make them behave as if they were passed by value.

您不必返回任何内容,只需设置fw变量成员即可.

话虽这么说,你有一些关于如何返回多个变量的选项.

>一种常见的方法是返回返回的数组的计数,并使用参数来设置数组.调用就像var length:int = register(out,object1,object2,object3).然后你可以在for循环中使用length变量.
>另一种方法是返回整个数组.我认为它不需要更多解释,但我想明确表示,如果你想要一个特定的成员,你可以直接使用返回的数组.例如,如果你想要第一个对象,你可以写t:Thing = fw.register(new Thing())[0] ;.记下最后的[0].
>您也可以使用上述方法,但使用Object insted of Array.

我个人不喜欢返回一个抽象对象,通常我选择返回整个数组.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读