美文网首页
dart 语言 03

dart 语言 03

作者: fanchuang | 来源:发表于2019-11-11 07:30 被阅读0次
笔记: 
1. dart, List的方法:
var l = [1, 2, 3, "some times, ok", 4, 5];

add(), length, isEmpty, isNotEmpty, first, last, clear()
l.sublist(1,3),                     // 前开后闭。[...)
l.shuffle(),
l.reversed.toList(),
Map<int, int> map = l.asMap();      // 返回 Map
var numbers = l.whereType<int>();   // 只选取 int 类型的值
l.getRange(1, 3),                  // 前开后闭。[...)
l.replaceRange(2, 4, [9, 8]);       // 替换,更新某些值
l.firstWhere((i) => i ==2)          // 查找
l.singleWhere((i) => i ==2)         // 查找 不建议使用
l.followedBy([22, 33]).toList();    // 在结尾添加追加列表
print(l.any((e) => e == 3));        // 任意一个元素是否满足某个条件, bool
print(l.every((e) => e == 3));        // 所有元素是否满足某个条件, bool
l.take(3).toList()          截取前3个并返回一个迭代器
l.skip(3).toList()          跳过前3个并返回一个迭代器

// fold(), 这里的5,是初始值, 相当于是再在列表的头部添加一个元素5,
// i+j, 指的是所有的相邻2个元素进行累加,也可以是 减,乘,除
l.fold(5, (i, j) => i + j)          

// reduce(), 与fold() 类似,只是没有初始值
l.reduce((i, j) => i *j);


11. dart 中 "then", 表示一个异步的结果出来之后,拿这个值去做另一件事:
void main() {
  Future.delayed(
    const Duration(seconds:  3),
    () => 100,
  ).then((value) {
    print("the value is: $value");
  });

  print("Waiting for a value");
}
// Waiting for a value
// the value is: 100
12. dart 中 "_", 下划线开头的变量,表示是私有的,仅在当前类中显示
13. dart, 根据传入的不同参数,一个类可以声明多个构造器,
// 普通构造器
Order(this._id, this._reference, this._date); 
// 命名构造器, 可以添加更多的可选选项
Order.withDiscount(this._id, this._reference, {this.code}) {
  _date = new DateTime.now();
}                      

14. 每次使用一个类的实例,实际上是在调用这个类的构造器。 
构造器的目的在于,确保实例具有 一致性,连贯性的状态。
15. 下面这个叫做 初始化器, initializer,接受一个冒号及其后面的语句。
class Robot {
  double height;
  Robot(height) : this.height = height, assert(height > 4.2);
  // Robot(this.height);   这种写法其实是一种简写。 
  // 上面的写法可以使用 assert 语句。
}
16. 构造器的{构造体}里面可以作为setter使用,但是不能返回任何值。
17. 所有的命名参数默认都是可选参数,但是可以加上 @required,表示必须。
Robot({ this.height, @required this.weight, this.names });
// 也可以提供默认值
 Robot({ this.height = 7, this.weight = 100, this.names = const [] });
18. 命名构造器, 一个类可以有多个构造器:
  - 使用命名构造器, 必须先提供一个普通的构造器
  - 命名构造器,我觉得是可以拥有更多的自定义空间
  - 也可以写一个私有的构造器 "_" : Robot._(this.name);
19. 工厂构造器可以返回一些值,而且工厂构造器:
  - 控制缓存,返回一些创建昂贵的对象
  - 可以返回其他的实例,子类
20. Singletons,单例模式: 即工厂构造器只返回当前类的实例
如果多次调用一个实例化一个类的话,单例模式可以确保指向的是同一个对象。
21. identical(r1, r2),判断2个引用,是否指向同一个对象。

相关文章

网友评论

      本文标题:dart 语言 03

      本文链接:https://www.haomeiwen.com/subject/rdpzbctx.html