如何在actionscript 3中声明一个可以作为任意数据类型的参数?

时间:2010-12-29 16:14:53

标签: actionscript-3 flex flex3

虽然这有效:

    public function func(settings)
    {
    }

它报告了一个警告,那么标准的方法是什么?

3 个答案:

答案 0 :(得分:3)

您可以使用*或对象:

public function foo(bar:*):void{
}

public function foo(bar:Object):void{
}

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/specialTypes.html# * http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/Object.html

答案 1 :(得分:2)

将其键入“*”或Object数据类型将起作用 - 但它确实不太理想。可能有一种方法可以指定正确的数据类型。

一个答案是输入所有可能输入的最具体的共同祖先的输入 - 例如,如果您知道它将是一个DisplayObject,但有时它将成为一个Loader,有时它将是一个Sprite,只需将其输入到DisplayObject,因为Loader和Sprite在技术上都是DisplayObjects。

另一种方式可能更“正确”,即将其键入接口。您的对象可以实现该接口,然后您就完成了设置。

如果您使用“*”或Object,那么您将放弃所有调试功能。理想情况下,您希望确切地知道应用程序生命周期中存在哪些对象以及它们存在于何处。每当你把一些东西作为一个对象放弃时你就会放弃 - 你会说“然后它会进入这个隧道而消失”,可以这么说。这是最好避免的,特别是对于必须由其他人维护的大型项目。

答案 2 :(得分:1)

你应该明确指定返回类型和参数类。这使您的代码更快,并且在6个月内更容易阅读!

所以这将是:

public function saveSettings(settings:Array):void
{
}

或什么可能是适当的事情来调用你的函数:)但不要只是称它为func ..将它命名为:)