【发布时间】:2021-07-25 01:45:13
【问题描述】:
我有一个函数,它接受另一个函数及其参数作为参数。函数的返回类型及其参数类型是未知的。我需要在运行时知道参数函数是否返回一个值或者它是否是一个 void 函数。
functionHandler(Function fn, List<dynamic> args) {
var result = fn(args[0], args[1]);
if ( -- fn returns a value --)
doSomething();
else if ( -- fn is a void function --)
doSomethingElse();
}
我不能使用 fn.runtimeType 因为参数类型未知。
void 函数将返回 null,但我无法区分 void 函数和仅返回 null 值的函数。
如果 fn 是返回类型为 void 的函数,我有什么方法可以在运行时检查?
【问题讨论】:
-
你真的需要区分
void和非void函数吗?如果您打算返回result,无论返回类型如何,您都可以这样做。 -
另外,
void函数也可以(遗憾地)返回非null值。它们通常不应该,但如果您将void foo() => something();写为void foo() { something(); }的简写,您实际上会返回something();的结果。
标签: dart