我实际上在 Unity 论坛上发布了这个,但我的语言相关问题似乎都没有在那里得到回答。所以,假设我在 Unity Script 中定义了一个函数:
function GetSomething : SomeClass
{
return new SomeClass();
}
SomeClass 是在别处定义的某个类。现在,我有一个 Function 类型的变量 theFunction,我想确保它返回一些东西,任何东西。所以我要做的是:
// theFunction is set to GetSomething somewhere else in the program.
var functionThatReturnsSomething = theFunction as function() : Object;
if (functionThatReturnsSomething != null)
//... call it and do stuff with the returned value.
现在不幸的是,在上面的代码中,functionThatReturnsSomething 将为空。为了不为空,我必须更具体并强制转换为 function() : SomeClass 或者只是覆盖函数定义以返回一个 Object ,如下所示:
function GetSomething : Object
{
return new SomeClass();
}
这很烦人,因为它很容易忘记做 :Object (特别是如果你忽略它,它会正确推断它是返回类型 SomeClass),结果不是错误,而是一个非常微妙的错误,因为施法失败。有什么方法可以得到我想要的行为,即它可以正确地向下转换为 function() : Object,就像我可以向下转换普通对象一样?