你需要使用" new" Dart中的关键字?

时间:2018-04-29 21:15:00

标签: dart

在我基于Dart的应用程序中,我发现我可以省略new关键字,一切都运行正常。

我可以使用final widget = new Widget();而不是final widget = Widget();

这对代码有影响吗?

4 个答案:

答案 0 :(得分:50)

不,它没有。使用Dart 2 (click for the announcement with more information)newconst个关键字设为可选

这意味着new Widget()Widget()完全相同。

答案 1 :(得分:11)

在Dart 2中,如果你调用像函数这样的构造函数,前面没有newconst,那么它等同于使用new。 如果你想要一个const调用,那么你应该把const放在前面。

const表达式中,您不需要再次编写const,并且在某些上下文中需要 const表达式(如switch case表达式和const变量的初始化程序),你甚至不需要外部的const。

所以你不需要写new

Dart语言团队希望允许表达式,您可以在其中插入newconst并且仍然使调用正确(即具有常量参数的const构造函数)以默认插入{{ 1}}而不是const,希望在Dart 2的早期更新中。 出于这个原因,我建议将new写在new或任何其他 const 构造函数的前面,其中需要该对象是一个新的实例。这是一个非常罕见的情况,通常你不关心你的不可变对象的身份(这就是为什么插入Object()被认为是个好主意。)

答案 2 :(得分:3)

在{art 1}中new关键字是可选的。到目前为止,调用一个类将始终返回该类的新实例。根据我的建议,您可以在版式定义之外使用它(不强制),但可以在版式内部省略。

我想与大家分享的另一点是,如果您在声明 widgets 的同时使用newconst关键字,您还可以看到 +图标,可用于折叠和展开窗口小部件主体代码。当您要在同一个文件中的另一个窗口小部件代码上工作时,要折叠/隐藏 dart文件中的其余窗口小部件代码时,这很有用。

答案 3 :(得分:1)

正如其他所有答案所述,在Dart 2中,使用function hitungjam() { var [h1, m1] = $('#inputJammulai').val().split(":"); var [h2, m2] = $('#inputJamselesai').val().split(":"); var start = new Date(), end = new Date(); start.setHours(h1); start.setMinutes(m1); end.setHours(h2); end.setMinutes(m2); var diff = end.getTime() - start.getTime(); var jam = (diff / 1000.0 / 60 / 60).toFixed(1); $('#inputSelisih').val(jam); }是可选的。此外,using new is discouraged by the Effective Dart guidelines