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中得到泛型,那么大多数*返回很可能是泛型返回。