Apache flex 如何创建可以返回actionscript中任何内容的函数

Apache flex 如何创建可以返回actionscript中任何内容的函数,apache-flex,actionscript-3,Apache Flex,Actionscript 3,如何使函数返回*,我的意思是函数可以返回任何东西,然后我可以相应地进行类型转换 private function get_current_files_view():TileList { var tlist:TileList; //switch(this[fm_model.files_display_type]) switch(vs_file_display.selectedChild) { case

如何使函数返回*,我的意思是函数可以返回任何东西,然后我可以相应地进行类型转换

private function get_current_files_view():TileList
    {
        var tlist:TileList;
        //switch(this[fm_model.files_display_type])
        switch(vs_file_display.selectedChild)
        {
            case cvs_user_files:    
                tlist = tlist_files;
                break;

            case bx_shared_data:                    
                tlist = tlist_shared_with_me;
                break;
            default:    
                throw new Error('Invalid container found');
        }
        return tlist;
    }
假设在这个函数中,我希望这个函数同时返回tilelist和datagrid(根据具体情况)应该更改的内容

请让我知道
谢谢你

您不需要定义返回类型。如果没有,则可以返回任何内容或不返回任何内容(不推荐):

或者,您可以定义它必须返回某些内容,但不返回任何内容

private function get_current_files_view():* { }
或者,如果希望具体化,您可以始终使用接口或基类:

private function get_current_files_view():ISomeInterface {}

这有用吗?还是我完全误解了您的问题?

您不需要定义返回类型。如果没有,则可以返回任何内容或不返回任何内容(不推荐):

private function whatsMyObject:(parameter:*):*
     {
     switch  (parameter.constructor)
             {
             case TileList:     trace("parameter is TileList");
                                break;

             case DataGrid:     trace("parameter is DataGrid");
                                break;

             default:           trace("parameter is neither TileList nor DataGrid");
             }

     return parameter;
     }
或者,您可以定义它必须返回某些内容,但不返回任何内容

private function get_current_files_view():* { }
或者,如果希望具体化,您可以始终使用接口或基类:

private function get_current_files_view():ISomeInterface {}
这有用吗?还是我完全误解了你的问题

private function whatsMyObject:(parameter:*):*
     {
     switch  (parameter.constructor)
             {
             case TileList:     trace("parameter is TileList");
                                break;

             case DataGrid:     trace("parameter is DataGrid");
                                break;

             default:           trace("parameter is neither TileList nor DataGrid");
             }

     return parameter;
     }
假设在这个函数中,我想要这个 函数返回tilelist和 datagrid(根据案例)什么 应该改变

如果是这种情况,那么应该返回,它是List和DataGrid的父类

如果希望能够返回任何对象,可以将返回类型指定为

如果您真的想要返回任何东西,包括primitve值,比如整数,您可以使用*,正如在另一个答案中所述。如果这是您真正需要的,我的直觉是您可能需要重构应用程序

假设在这个函数中,我想要这个 函数返回tilelist和 datagrid(根据案例)什么 应该改变

如果是这种情况,那么应该返回,它是List和DataGrid的父类

如果希望能够返回任何对象,可以将返回类型指定为


如果您真的想要返回任何东西,包括primitve值,比如整数,您可以使用*,正如在另一个答案中所述。如果这是您真正需要的,我的直觉是您可能需要重构应用程序

始终最好使用
is
而不是未记录的
构造函数
属性。它也会捕获子类。构造函数是有文档记录的:使用
is
总是比使用未文档化的
构造函数
属性更好。它还将捕获子类。构造函数被记录为:+1,用于建议使用接口。我认为这是一种比使用*作为返回类型更好的开发方法。严格模式下的Flex编译器不会接受没有返回类型的方法。最佳做法是始终定义返回类型。@TandemAdam:同意。我喜欢将例程具体定义为函数(返回某物…*、类型、对象等)或过程(返回void)。呼叫方很清楚是否期望返回。我将编辑我的回复以添加该建议。然而,我的变量很乐意混合使用静态类型和动态类型。然而,在函数中,我们应该指定一些东西。@TandemAdam我认为Flex编译器在严格模式下“不会接受没有返回类型的方法”的说法有点不准确。Flex编译器会发出警告,但编译时警告不会阻止您编译应用程序。+1用于建议使用接口。我认为这是一种比使用*作为返回类型更好的开发方法。严格模式下的Flex编译器不会接受没有返回类型的方法。最佳做法是始终定义返回类型。@TandemAdam:同意。我喜欢将例程具体定义为函数(返回某物…*、类型、对象等)或过程(返回void)。呼叫方很清楚是否期望返回。我将编辑我的回复以添加该建议。然而,我的变量很乐意混合使用静态类型和动态类型。然而,在函数中,我们应该指定一些东西。@TandemAdam我认为Flex编译器在严格模式下“不会接受没有返回类型的方法”的说法有点不准确。Flex编译器会发出警告,但编译时警告不会阻止您编译应用程序。+1是的,我同意这一点。通常(但肯定不总是),*是一种逃避。。。特别是如果你知道你只想要两种类型中的一种。我喜欢使用
ListBase
。当你真的可以归还任何东西时,归还*是很棒的。如果我们在AS3中得到泛型,那么大多数*返回很可能是泛型返回。+1是的,我同意这一点。通常(但肯定不总是),*是一种逃避。。。特别是如果你知道你只想要两种类型中的一种。我喜欢使用
ListBase
。当你真的可以归还任何东西时,归还*是很棒的。如果我们在AS3中得到泛型,那么大多数*返回很可能是泛型返回。