- 变量
1. 使用var声明变量,可赋予不同类型的值
2. 未初始化时,默认值为null
3. 使用final声明一个只能赋值一次的变量,必须初始化
4. final变量需要在声明时赋值进行初始化
- 常量
如果定义一个常量,请使用final
或const
。最终变量只能设置一次;常量变量是编译时常数。(Const变量是隐式的final。)最终的顶级或类变量在第一次使用时被初始化。
1. 使用const声明常量
2. 使用const声明时必须初始化,不能再次被赋值
3. const 变量是编译时常量,需要在声明时赋值进行初始化
- 案例:
void main() {
print("Hello World");
// 变量
var a;
print(a);
a = 100000;
print(a);
// 常量
const d = 4000;
// d = 4020;
print(d);
// 声明只能赋值一次的变量 必须初始化
final c = 222;
print(c);
// name变量的类型被推断为String
var name = 'Bob';
}
结果:
Launching lib/hello_word.dart on iPhone XR in debug mode...
Xcode build done. 4.0s
flutter: Hello World
flutter: null
flutter: 100000
flutter: 4000
flutter: 222
- 注意事项:
final name = 'Bob'; // 正确
// name = 'Alice'; // 错误,final 变量只能赋值一次
// const name1; // 错误,const 变量是编译时常量,需要在声明时赋值进行初始化
// final name1; // 错误,final变量需要在声明时赋值进行初始化
const name2 = 'Alice'; // 正确
// const name3 = name; // 错误,name 是个变量,不能赋给const
final name4 = name2; // 正确,可以把const 常量赋给 final 变量
// final names1 = const[name, 3, 4]; // 错误,name 是个变量,不能赋给const
final names2 = const[name2, 'Allen', 'Brian'];
const names3 = ['A', 'B', 'C']; // 正确。这里与参考 http://www.cndartlang.com/658.html 有点差别,经实测是正确的
const names4 = const['A','B', 'C']; // 正确。
print(names3[1]);
print(names4[1]);
const关键字不仅仅用于声明常量变量。您还可以使用它来创建常量值
,以及声明创建常量值的构造函数。任何变量都可以有一个常数。
var foo = const [];
final bar = const [];
const baz = []; // 等于 `const []`
//baz = [42]; // 错误: 常量变量不能赋值。
//const aconstList = [1,2,3]; 报错 expression is not a valid compile-time constant
网友评论