分析员并不认为final var
是非法的。
但是dart2js说final var
是非法的
什么是正确的?为什么呢?
答案 0 :(得分:5)
这可能是分析仪中的一个错误。 final
和var
是互斥的。
允许以下其中一项
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
的变量一次是value
和variable
。
它是可变的,因为它有runtime storage
。
但它也是immutable value
只能从关联存储中检索一次,可以在任何地方使用。
现在考虑以下代码:
final var foo;
这与以下伪代码相同:
immutable mutable dynamic foo;
当然,这不起作用。