分析仪没有说final var
是非法的。但 dart2js 说final var
是非法的
什么是正确的?为什么?
这可能是分析器中的一个错误。final
并且var
是互斥的。
允许以下之一
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” .)
关键字var
表示具有显式类型说明符的可变变量dynamic
。显式类型说明符意味着这不可能在声明中指定另一种类型。
关键字final
表示val
具有未指定类型的不可变变量,具有隐式dynamic
类型。隐式类型说明符意味着可以在声明中指定其他类型。
更准确地说,声明为的变量val
是value
and variable
。
它是可变的,因为具有runtime storage
.
但它也immutable value
可以从相关存储中检索一次,并且可以在任何地方使用。
现在考虑以下代码:
final var foo;
这与以下伪代码相同:
immutable mutable dynamic foo;
当然,这是行不通的。