美文网首页
Dart:函数的级联

Dart:函数的级联

作者: 睿丶清 | 来源:发表于2019-10-28 22:44 被阅读0次

    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 +
            '}';
      }
    }
    
    

    相关文章

      网友评论

          本文标题:Dart:函数的级联

          本文链接:https://www.haomeiwen.com/subject/tdmivctx.html