基础部分
1. dynamic name = 'Bob'; 表示一种动态类型
2. 任何变量的初始值都是 null, 连boolean的初始值也是
3. final or const, 都可以表示常量
实例化子类的变量可以用final, 不能用 const,
const, 是一个编译时的常量,可以用于等号的右边
4. var list2 = [0, ...list1]; 表示串联2个数组
var list2 = [0, ...?list1]; 问号表示不清楚list1是否为空
5. 定义一个集合:
Set<String> names2 = {}; 或者:
var names = <String>{};
6. 定义一个字典:
var gifts = Map(); 或者:
var gifts = {};
7. String say(String msg, [String device]) {}
把一个参数用用方括号包裹住, 表示是一个可选参数
8. 计算符号
~/ 地板除
var a = 1; ++a; a = 2
b = a++; 表示的是先把a的值赋给b, 然后b再+1
++a, 自增1, a++自己不变
9. is, is! 用于类型判断
10. b ??= 3; 如果b为空, b=3, 否则,b的值不变
11. || 或, && 并且
12. 关于问号(其实是一种简写, 类似列表解析):
condition ? expr1 : expr2, 一个问号, 根据条件真假赋值
expr1 ?? expr2, 两个问号, 看表达式的第一句是否为空
13. for 循环有2种写法都是可行的
for (var i=0; i<5; i++){}
for (var x in collection) {}
14. rethrow; 部分错误被处理之后再次抛出
15. this 关键字, 指的是当前的实例
16. 子类如果想要继承父类的构造器: 需要加上冒号,比如
Employee.fromJson(Map data) : super.fromJson(data) {}
2. 补充.
1. assert(!identical(a, b)), 判断是否为同一个实例
2. print('{a.runtimeType}'); 判断a的类型
3. static do() {}, 静态方法(即类方法)不能被一个类的实例访问,
同样地,静态方法内也不可以使用 this
4. dart语言中的 <>, 表示 泛型, 表示数据类型,比如:
List<String>, 指的是一个字符串类型的列表,
也可以类来作为泛型参数.也可以自定义泛型的类型,<T>
5. URI = [URL, <import 'something'>,...] ,是一种包含的关系
6. import 'package:lib1/lib1.dart' show foo; 只显示foo
7. import 'package:lib2/lib2.dart' hide foo; 除了foo之外的所有
8. await 表达式的返回值通常是一个 Future 对象, (代表一个 承诺)
网友评论