在我基于Dart的应用程序中,我发现我可以省略new
关键字,一切都运行正常。
我可以使用final widget = new Widget();
而不是final widget = Widget();
。
这对代码有影响吗?
答案 0 :(得分:50)
不,它没有。使用Dart 2 (click for the announcement with more information),new
和const
个关键字设为可选。
这意味着new Widget()
与Widget()
完全相同。
答案 1 :(得分:11)
在Dart 2中,如果你调用像函数这样的构造函数,前面没有new
或const
,那么它等同于使用new
。
如果你想要一个const调用,那么你应该把const
放在前面。
在 const表达式中,您不需要再次编写const
,并且在某些上下文中需要 const表达式(如switch case表达式和const变量的初始化程序),你甚至不需要外部的const。
所以你不需要写new
。
Dart语言团队希望允许表达式,您可以在其中插入new
或const
并且仍然使调用正确(即具有常量参数的const构造函数)以默认插入{{ 1}}而不是const
,希望在Dart 2的早期更新中。
出于这个原因,我建议将new
写在new
或任何其他 const 构造函数的前面,其中需要该对象是一个新的实例。这是一个非常罕见的情况,通常你不关心你的不可变对象的身份(这就是为什么插入Object()
被认为是个好主意。)
答案 2 :(得分:3)
在{art 1}中new
关键字是可选的。到目前为止,调用一个类将始终返回该类的新实例。根据我的建议,您可以在版式定义之外使用它(不强制),但可以在版式内部省略。
我想与大家分享的另一点是,如果您在声明 widgets 的同时使用new
或const
关键字,您还可以看到 +图标,可用于折叠和展开窗口小部件主体代码。当您要在同一个文件中的另一个窗口小部件代码上工作时,要折叠/隐藏 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。