为什么`final var`在Dart中是非法的?

时间:2014-03-13 05:24:30

标签: dart dart2js

分析员并不认为final var是非法的。 但是dart2js说final var是非法的

什么是正确的?为什么呢?

2 个答案:

答案 0 :(得分:5)

这可能是分析仪中的一个错误。 finalvar是互斥的。

允许以下其中一项

  • 最终标识符
  • 最终类型标识符
  • const identifier
  • const类型标识符
  • var identifier
  • 类型标识符

Dart Programming Language Specification (1.2) - Variables

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的错误(会员可以不被宣布为最终'和' var'。

答案 1 :(得分:2)

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

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

更准确地称为val的变量一次是valuevariable

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

但它也是immutable value只能从关联存储中检索一次,可以在任何地方使用。

现在考虑以下代码:

final var foo;

这与以下伪代码相同:

immutable mutable dynamic foo;

当然,这不起作用。