级联操作符-和扩展运算法
级联操作符「..」和 扩展运算法「...」
级联操作符-和扩展运算法
级联操作符「..」和 扩展运算法「…」
级联操作符 ../ ?..
级联操作符可以在同一个对象上连续调用多个函数以及访问成员变量。
Dart 当中的 .. 可以让你在同一个对象上连续调用多个对象的变量或方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void test() {
CascadingOperator operator = new CascadingOperator();
operator
..A()
..B()
..C();
}
class CascadingOperator {
void A() {
print("这是方法A");
}
String B() {
var k = "这是方法B";
print(k);
return k;
}
void C() {
print("这是方法C");
}
}
输出:
这是方法A
这是方法B
这是方法C
扩展运算法 .../ 空感知扩展运算符 ...?
在 Dart 语言中,spread 运算符(…)用于将可迭代对象(如列表、集合或映射)的元素展开到一个新的集合或映射中。
使用 spread 运算符,你可以轻松地合并多个集合或列表,或者将一个集合或列表的元素添加到另一个集合或列表中。
以下是 Dart 中使用 spread 运算符的一些示例:
列表展开
1
2
3
4
5
6
dartvoid main() {
List<int> numbers1 = [1, 2, 3];
List<int> numbers2 = [...numbers1, 4, 5, 6];
print(numbers2); // 输出: [1, 2, 3, 4, 5, 6]
}
在这个例子中,numbers2 列表是通过展开 numbers1 列表并添加额外的元素来创建的。
映射展开
1
2
3
4
5
6
dartvoid main() {
Map<String, int> map1 = {'a': 1, 'b': 2};
Map<String, int> map2 = {...map1, 'c': 3};
print(map2); // 输出: {a: 1, b: 2, c: 3}
}
在这个例子中,map2 映射是通过展开 map1 映射并添加一个新的键值对来创建的。
函数参数中的展开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dartvoid printNumbers(List<int> numbers) {
for (int number in numbers) {
print(number);
}
}
void main() {
List<int> numbers1 = [1, 2, 3];
List<int> numbers2 = [4, 5, 6];
printNumbers([...numbers1, ...numbers2]);
// 输出:
// 1
// 2
// 3
// 4
// 5
// 6
}
在这个例子中,printNumbers 函数接受一个整数列表作为参数。在调用该函数时,我们使用了两个列表 numbers1 和 numbers2,并通过展开运算符将它们合并为一个新的列表传递给函数。
集合展开
1
2
3
4
5
6
dartvoid main() {
Set<int> set1 = {1, 2, 3};
Set<int> set2 = {...set1, 4, 5};
print(set2); // 输出可能是: {1, 2, 3, 4, 5},但集合是无序的,所以输出顺序可能不同
}
在这个例子中,set2 集合是通过展开 set1 集合并添加额外的元素来创建的。
请注意,由于集合是无序的,所以即使你按照特定的顺序添加了元素,输出中的顺序也可能不同。
spread 运算符提供了一种简洁而灵活的方式来操作集合、列表和映射,而无需编写额外的循环或逻辑。
本文由作者按照 CC BY 4.0 进行授权