Dart

作者: 海东青_fb7a | 来源:发表于2021-03-13 11:49 被阅读0次
    • assert(5 / 2 == 2.5); // 结果是双浮点型
    • assert(5 ~/ 2 == 2); // 结果是整型
    • assert(5 % 2 == 1); // 余数
    使用 as 运算符将对象强制转换为特定类型。 通常,可以认为是 is 类型判定后,被判定对象调用函数的一种缩写形式
    if (emp is Person) {
      // Type check
      emp.firstName = 'Bob';
    }
    
    (emp as Person).firstName = 'Bob';
    
     将值赋值给变量a
    a = value;
     如果b为空时,将变量赋值给b,否则,b的值保持不变。
    b ??= value;
    
    A?.B
    如果 A 等于 null,那么 A?.B 为 null
    如果 A 不等于 null,那么 A?.B 等价于 A.B
    
    • condition ? expr1 : expr2
      如果条件为 true, 执行 expr1 (并返回它的值): 否则, 执行并返回 expr2 的值。
      expr1 ?? expr2
      如果 expr1 是 non-null, 返回 expr1 的值; 否则, 执行并返回 expr2 的值。
    如果赋值是根据布尔值, 考虑使用 ?:
    var visibility = isPublic ? 'public' : 'private';
    
    如果赋值是基于判定是否为 null, 考虑使用 ??
    String playerName(String name) => name ?? 'Guest';
    
    • 捕获语句中可以同时使用 on 和 catch ,也可以单独分开使用。 使用 on 来指定异常类型, 使用 catch 来 捕获异常对象。
    try {
      breedMoreLlamas();
    } on OutOfLlamasException {
      // 一个特殊的异常
      buyMoreLlamas();
    } on Exception catch (e) {
      // 其他任何异常
      print('Unknown exception: $e');
    } catch (e) {
      // 没有指定的类型,处理所有异常
      print('Something really unknown: $e');
    }
    
    • 如果仅需要部分处理异常, 那么可以使用关键字 rethrow 将异常重新抛出。
    void misbehave() {
      try {
        dynamic foo = true;
        print(foo++); // Runtime error
      } catch (e) {
        print('misbehave() partially handled ${e.runtimeType}.');
        rethrow; // Allow callers to see the exception.
      }
    }
    
    void main() {
      try {
        misbehave();
      } catch (e) {
        print('main() finished handling ${e.runtimeType}.');
      }
    }
    
    • 枚举中的每个值都有一个 index getter 方法, 该方法返回值所在枚举类型定义中的位置(从 0 开始)。 例如,第一个枚举值的索引是 0 , 第二个枚举值的索引是 1。
    enum Color { red, green, blue }
    

    使用枚举的 values 常量, 获取所有枚举值列表( list )。

    List<Color> colors = Color.values;
    assert(colors[2] == Color.blue);
    assert(Color.red.index == 0);
    
    - List , Set 和 Map 
    var names = <String>['Seth', 'Kathy', 'Lars'];
    var uniqueNames = <String>{'Seth', 'Kathy', 'Lars'};
    var pages = <String, String>{
      'index.html': 'Homepage',
      'robots.txt': 'Hints for web robots',
      'humans.txt': 'We are people, not machines'
    };
    
    • 限制泛型类型
      使用泛型类型的时候, 可以使用 extends 实现参数类型的限制
    class Foo<T extends SomeBaseClass> {
      // Implementation goes here...
      String toString() => "Instance of 'Foo<$T>'";
    }
    
    • import 'package:lib1/lib1.dart';
      import 'package:lib2/lib2.dart' as lib2;
    // 使用 lib1 中的 Element。
    Element element1 = Element();
    
    // 使用 lib2 中的 Element。
    lib2.Element element2 = lib2.Element();
    

    相关文章

      网友评论

          本文标题:Dart

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