Dart列表

在 Dart 中,数组是 List 对象,因此大多数人直接称它们为列表,Dart 列表字面量由用方括号 ([]) 括起来的逗号分隔的元素列表表示。每个元素通常是一个表达式。以下是一个简单的 Dart 列表:

var list = [1, 2, 3]; //自动推断为List<int>类型

Dart 推断 list 的类型为 List<int>。如果您尝试将非整数对象添加到此列表中,分析器或运行时将引发错误

1、动态类型列表

使用var自动推断的列表也叫动态类型列表,动态类型列表的特点是列表中元素可以有不同的类型,语法如下:

var lists = [1,'hello',true]; //var声明,包含各种类型
或
List lists = [1,'hello',true];//List声明,包含各种类型

2、强类型列表

强类型列表在声明的时候要指定列表中元素的类型,因此列表中元素类型单一,语法如下:

var lists = <int>[1,2,3,4,]; //只能是int
或
List<int> newlists = [1,2,3,4,]

可以在 Dart 集合字面量中的最后一项后添加逗号。这个尾随逗号不会影响集合,如下:

var list = [1, 2, 3,];  //3后面多了一个逗号

3、访问列表

列表使用基于零的索引,其中 0 是第一个元素的索引,list.length-1 是最后一个元素的索引。

可以使用 .length 属性获取列表的长度,并使用下标运算符 ([]) 访问列表的元素,如图:

通过for循环遍历列表,如图:

4、要创建编译时常量列表,请在列表字面量前添加 const,此时列表不可修改,如下:

var Lists = const <int>[1, 2, 3];
//Lists[2] = 10; 将会报错,因为不可修改,但是Lists可以重新赋值
Lists = [5,6,7,8];  //可以重新赋值

如果要创建不可重新赋值的列表变量,可以使用final,如下:

final Lists = const <int>[1,2,3];
Lists = [5,6,7];  //报错,不可以重新赋值

如果使用final声明变量但是集合没有使用const,那么Lists不能重新赋值但是可以修改它的值,如下:

final Lists = <int>[1,2,3];//没有使用const
Lists[1] = 8;   //列表变为[1,8,3]

5、判断一个变量是不是列表,可以使用if循环,如下:

var lists = <int>[1, 2, 3, 4]; //强类型,只能是int
  //判断是否为List
  if (lists is List) {
    print('yes');
  } else {
    print('no');
  }

标签