Dart:函数的级联

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);
    
2019102802.png

在编辑器中代码出错,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 +
        '}';
  }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容