3

分析仪没有说final var是非法的。但 dart2js 说final var是非法的

什么是正确的?为什么?

4

2 回答 2

5

这可能是分析器中的一个错误。final并且var是互斥的。

允许以下之一

  • 最终标识符
  • 最终类型标识符
  • 常量标识符
  • 常量类型标识符
  • 变量标识符
  • 类型标识符

Dart 编程语言规范 (1.2) - 变量

finalConstVarOrType:
   final type?
   | const type?
   | varOrType
   ;
varOrType:
   var
   | type
   ;

编辑

我的 DartEditor(Dart VM 版本:1.3.0-dev.3.2(2014 年 3 月 10 日星期一 10:15:05)在“linux_x64”上)显示错误final var xxx(成员不能被声明为“final”和“var” .)

于 2014-03-13T06:01:31.590 回答
5

关键字var表示具有显式类型说明符的可变变量dynamic。显式类型说明符意味着这不可能在声明中指定另一种类型。

关键字final表示val具有未指定类型的不可变变量,具有隐式dynamic类型。隐式类型说明符意味着可以在声明中指定其他类型。

更准确地说,声明为的变量valvalueand variable

它是可变的,因为具有runtime storage.

但它也immutable value可以从相关存储中检索一次,并且可以在任何地方使用。

现在考虑以下代码:

final var foo;

这与以下伪代码相同:

immutable mutable dynamic foo;

当然,这是行不通的。

于 2014-03-13T08:27:33.493 回答