Dart基础

    Dart有3中注释:

// 行内注释
/*
多行注释
*/
/// 暂时不清楚用途的注释

    Dart具有类型推断功能,可以明确指定变量类型,也可以使用 var 定义变量。但它是一种强类型语言,一旦类型被推断出来,就不能再改变类型了。

    变量命名规则:由数字、字母、下划线和美元符号组成,不能以数字开头。

    使用 const 或 final 定义常量, const 常量在定义时必须赋值, final 常量可以先定义而后赋值,且只能赋值一次。 final 不仅有 const 编译时常量的特性,它还是运行时常量,并且惰性初始化(在运行时第一次使用前初始化)。例如:

final DateTime date = new DateTime.now();

    上面的 final 不能换为 const 。

    可以用单引号或双引号定义字符串,使用三个单引号或双引号定义多行字符串。在字符串内使用 ${} 可以进行插值,如果只是一个变量可以省略花括号,插值一般优于字符串拼接。

    只有 List 没有 Array ,但是 List 重载了 [] 操作符,可以像操作数组一样操作列表。没有指定类型的列表就像Java中没有指定泛型的列表可以持有所有 Object 一样,可以存放任意类型的元素。

List<String> s = <String>['first', 'second'];

    使用 is 判断变量类型。

int a = 13;
int b = 5;
double c = a / b; // 2.6
int d = a ~/ b; // 2

 ??= 在左操作符为空时赋值, int.parse() 和 double.parse() 静态方法将字符串转换为整型或浮点型。

    类似于JavaScript,可以通过设置 length 属性改变列表的长度,列表的很多东西使用属性来实现:

     List list = []; print(list.isEmpty); print(list.isNotEmpty); print(list.reversed.toList()); 

     iterable 使用()显示,集合能否保持顺序?

     List 、 Set 都支持 forEach() 、 every() 、 any() 、 map() 方法,传入方法作为参数。 Map 支持 forEach() 和 map() 方法。

Map map1 = new Map();
map1['a'] = 1;
map1['b'] = 2;
Map map2 = map1.map((key, value) {
    return MapEntry(key + '-', value + 1);
});
print(map2);

     List 和 Set 的 map() 方法都返回 Iterable , Map 的此方法直接返回 Map 。

    方法可以嵌套,可选参数(使用[]指定)和命名参数(使用{}指定)都可以指定默认值。在嵌套方法中引用父方法中的变量,并在父方法中将嵌套方法返回,则嵌套方法持有父方法中变量的引用,不会被回收,实现了父方法范围内的一个全局变量,这就叫闭包。

class Person {
  String _name;
  int _age;
  Person(this._name, this._age);
  get name {
    return this._name;
  }

  set name(newName) {
    this._name = newName;
  }
}

class Student extends Person {
  String stuid;
  Student(name, age, this.stuid) : super(name, age);
}

    getter和setter可以实现对私有域的获取和设置,同时可以重新设置名称,也可以实现用域访问的语法实现方法的效果。

posted @ 2019-05-18 21:21  caobingkun  阅读(134)  评论(0编辑  收藏  举报