美文网首页
Dart语法中的注意点

Dart语法中的注意点

作者: Sweet丶 | 来源:发表于2020-11-15 17:46 被阅读0次
    1. ??=??的用法
    // ??的用法是:
    // name 有值则 name ?? "阿三"结果是name; name没有值结果是后面的"阿三"
    // 这个值会赋值给name2变量
    name2 = name ?? "阿三";
    
    // ??=的用法是:
    // name不为null则name=name, 如果name没有值则name=后面的值
    // 等价于 name = name ?? "ABC"
    name ??= "ABC";
    
    2. 字符串三个引号

    字符串使用单引号和双引号都可以,但是三引号是代表什么?
    三引号代表多行文字,三引号中间可以按回车。

    字符串中如果包含了转义字符,然而又想直接显示这个字符串的做法:

    通过提供一个 r 前缀可以创建一个 “原始 raw” 字符串:

    var s = r"牛呆呆 \n 你在哪";
    print(s);// \n也会被打印
    
    3. identical函数==

    identical(p1, p2): 判断p1和p2是否是同一个对象。
    p1 == p2: 是可以在类中定义==操作符来判断是否相等的.

    class Person {
      String ssn;
      String name;
    
      Person(this.ssn, this.name);
    
      // Define that two persons are equal if their SSNs are equal
      bool operator ==(other) {
        return (other is Person && other.ssn == ssn);
      }
    }
    main() {
      var bob = new Person('111', 'Bob');
      var robert = new Person('111', 'Robert');
    
      print(bob == robert); // true
    
      print(identical(bob, robert)); // false, because these are two different instances
    }
    
    4. 级联运算符

    对一个对象连续调用多个方法,使用..

    class Person {
      String name;
    
      void run() {
        print("run");
      }
    
      void eat() {
        print("eating");
      }
    }
    main(List<String> args) {
      final girl = Person()
        ..name = "qingqing"
        ..eat()
        ..run();
    }
    
    5. 函数--位置可选参数和命名可选参数
    // 位置可选参数
    // 可选参数放在[]中,可以不传,但如果要传需按顺序传
    int optionParams(String name, [int age, double height]) {
      ... 
    }
    // 使用时: 
    optionParams("dandy", null, 165);
    
    // 命名可选参数
    // 放在{}中的参数时命名可选参数,可选择性的传或不传
    int optionParams_name(String name, {int age, double height}) {
    ...
    }
    // 使用时
    optionParams_name("dandy", height: 165);
    
    6.抽象类和抽象方法
    • 抽象类使用abstract关键字声明,抽象方法是抽象类中没有方法体的方法。
    • 子类继承抽象类必须实现抽象类中的抽象方法, 抽象类不能初始化实例对象,编译时会报错。
    • 抽象类作为接口使用的时候必须实现所有的属性和方法。
    7. 初始化列表

    1)初始化列表会在构造方法体执行之前
    2)使用逗号分隔初始化表达式
    3)初始化列表常用于设置final变量的值

    Person.fromMap(Map map): name = map["name"], level = map["level"] {
        this.age = map["age"];
     }
    
    8. 导入库文件

    每个Dart文件都是一个库,在需要引用其他库时需要导入

    import 'lib/xxx.dart';
    import 'dart:math';
    import 'package:http/http.dart' as http; 
    

    as: 在导入库时用as可以给库文件起别名。

    • import 'xxx' show compute1,compute2 只导入compute1,compute2
    • import 'xxx' hide compute3 除了compute3都引入.

    相关文章

      网友评论

          本文标题:Dart语法中的注意点

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