【问题标题】:Is result() a reserved function or keyword in Dart?result() 是 Dart 中的保留函数还是关键字?
【发布时间】:2020-07-06 10:18:37
【问题描述】:

我只是在玩 Dart 期货,但遇到了一个错误:

未捕获的错误:NoSuchMethodError:找不到方法:'call$2' on null

然后我发现函数“结果”是原因。 但是,如果我为函数使用另一个名称,一切都会正常工作。

Future<String> result() async {
    var res = await process();
    return 'Your order is: $res';
}

Future<String> process() {
    return Future.delayed(Duration(seconds: 2), () => 'Water');
}

void main() async {
    print(await result());
}

谁能澄清一下?

【问题讨论】:

  • 我编译了这段代码,它工作正常。据我所知,结果不是保留的函数或关键字。
  • 我在 dartpad 上使用了它,但我确实得到了错误。不知道为什么。这可能是一个 dart2js 错误
  • 我在 dartpad 上编译它并抛出错误,仅当函数名为 result 并标记为 async 并等待未来。 (标记为async 不会抛出任何异常)
  • 改方法名,问题解决。即使我也尝试过使用 dartpad,我得到了一个叫做脚本错误的错误

标签: dart


【解决方案1】:

您在 Dart-to-JavaScript 编译器 dart2js 中发现了一个错误。对于那个很抱歉。我已经在这里提交了:https://github.com/dart-lang/sdk/issues/41733

回答您的问题:不,result 不是 Dart 中的保留关键字。您在此处的代码应该可以正常工作(事实上,在命令行上运行或 AOT 编译时可以完美运行)。

【讨论】:

  • 哦该死的,我刚刚注意到上面jamesdlin 的评论。该错误已提交。 facepalm 在尝试复制某些内容并提交错误等之前,我应该阅读整个页面。 @NM AA,你能结束这个问题吗?
猜你喜欢
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2018-04-10
  • 2019-03-12
  • 2021-08-15
  • 2010-10-08
相关资源
最近更新 更多