1

前几天(如下)我遇到了下面的代码,想知道它是否在 Dart 中实现了任何重要的东西,除了不能更改类实例化这一事实。我确实阅读了一些关于 Java 的 SO 帖子,但是它们似乎并没有定论,也不一定适用于 Dart。我不会那样编码(使用final),但也许我应该这样做。在这种情况下使用“final”有什么重大意义吗?它有什么作用?

import 'dart:math';

final _random = new Random();
4

2 回答 2

5

飞镖:启动和运行

如果您从不打算更改变量,请使用finalorconst来代替var或添加类型。一个final变量只能设置一次;变量是const编译时常量。

声明为 final 的局部变量、顶级变量或类变量在第一次使用时会被初始化。

所以在这里使用有三个好处final

  1. 如果某些代码错误地尝试设置_random另一个时间,则会产生错误。
  2. 对于其他程序员(或以后的同一程序员)来说,它也更清楚,它_random永远不会被改变。
  3. _random在使用之前不会初始化,因此应用程序将启动得更快。

出于这些原因,我认为这是很好地使用final; 没有它,代码当然会“工作”,但这样更好。

简而言之,我认为这本书提供了合理的建议:“如果您从不打算更改变量,请使用finalor const”。

于 2013-06-08T21:35:28.580 回答
1

文档中:

声明为 final 的局部变量、顶级变量或类变量在第一次使用时会被初始化。最终变量的延迟初始化有助于应用程序更快地启动。

于 2013-06-08T21:27:36.930 回答