dart支持双点运算符进行方法的级联。也就是当我们需要对一个对象执行一系列操作时,级联是非常有用的,方便我们操作对象,节省代码量.
-
操作对象:
创建 Address类class Address extends Object { String name; String number; String street; @override String toString() { // TODO: implement toString return '{name:' + this.name + ',number:' + this.number + ',street:' + this.street + '}'; } }
在程序入口进行初始化,打印address对象:
main() { Address address = new Address(); address.name = '西城区'; address.street = '北京市'; address.number = '12'; }
打印结果:
2019102801.png
针对上代码我们使用级联来实现,具体实现代码如下:
print(new Address()
..street = '北京市'
..number = '12'
..name = '西城区');
可以输出同样的结果,在级联中address调用的所有的方法都是返回当前对象!这样写增强了代码的可读性!
-
执行对象方法返回是其他值:
var sortedColors = ['red', 'green', 'orange', 'blue', 'black', 'pink'].sublist(1, 4).sort(); print(sortedColors);
在编辑器中代码出错,sortedColors是null,为了实现我们打印sortedColors,我们将上编代码进行修改,如下
var colors =
['red', 'green', 'orange', 'blue', 'black', 'pink'].sublist(1, 4);
colors.sort();
print(colors);
这样可以打印出最终的结果,我们也可以使用级联的方式来实现同样的结果,使用级联实现代码如下:
```
var sortedColors1 =
['red', 'green', 'orange', 'blue', 'black', 'pink'].sublist(1, 4)..sort();
print(sortedColors1);
```
运行结果依然相同!
2019102803.png
由此可见,在编写dart程序是适当灵活的使用方法级联可以有效的提高编码效率和编码的可读性!
最后附上源码:
main() {
print(new Address()
..street = '北京市'
..number = '12'
..name = '西城区');
Address address = new Address();
address.name = '西城区';
address.street = '北京市';
address.number = '12';
print(address);
var sortedColors =
['red', 'green', 'orange', 'blue', 'black', 'pink'].sublist(1, 4).sort();
print(sortedColors);
var colors =
['red', 'green', 'orange', 'blue', 'black', 'pink'].sublist(1, 4);
colors.sort();
print(colors);
var sortedColors1 =
['red', 'green', 'orange', 'blue', 'black', 'pink'].sublist(1, 4)..sort();
print(sortedColors1);
}
class Address extends Object {
String name;
String number;
String street;
@override
String toString() {
// TODO: implement toString
return '{name:' +
this.name +
',number:' +
this.number +
',street:' +
this.street +
'}';
}
}
网友评论