Updated on 十二月 29, 2021
Dart笔记
一直稀里糊涂地用,没仔细学习一下。记录一下在官网学习的笔记吧。
sync* 、 async* 、yield
标记为sync*的函数返回一个Iterable,用例如下:
void main() {
final numbers = getRange(1, 10);
for (var value in numbers) {
print('$value');
}
}
Iterable<int> getRange(int start, int end) sync* {
for (int i = start; i <= end; i++) {
yield i;
}
}
async*和sync*类似,不过是异步的,返回值会被包裹在Stream中,用例如下:
Stream<int> countForOneMinute() async* {
for (int i = 1; i <= 60; i++) {
await Future.delayed(const Duration(seconds: 1));
yield i;
}
}
main() async {
await for (int i in countForOneMinute()) {
print(i); // 打印 1 到 60,一个秒一个整数
}
}
函数
=> 表达式 是 { return 表达式; } 的简写
匿名函数
([[类型] 参数[, …]]) {
函数体;
}
运算符
~/ 除并取整
命名式构造函数
const double xOrigin = 0;
const double yOrigin = 0;
class Point {
double x = 0;
double y = 0;
Point(this.x, this.y);
// Named constructor
Point.origin()
: x = xOrigin,
y = yOrigin;
}