1. Dart 中创建变量的三种方式

65 阅读2分钟
  1. 使用 var 关键字: Dart 允许通过 var 关键字来创建变量,编译器会自动根据赋值来推断变量的类型。这种方式与 Swift 和 Kotlin 的变量创建类似。

    var name = 'Bob';  
    

    重点概念:

    类型推断: Dart 是一种强类型语言,每个变量都有一个确定的数据类型。在上述示例中,name 被推断为 String 类型。

  2. 使用 Object 或 dynamic 关键字

    Object name = 'Bob';
    dynamic name = 'Bob'
    

    重点概念:

    a. Dart中有两种类可以用来申明任何类型的对象,一个是Object,一个是dynamic。但是他们的本质是完全不同的。

    Object类型: 在Dart中一切都是对象,所有的对象最终都继承于Object class,Dart不存在原始类型这一说法,数字,布尔类型,函数,甚至 null一切都是对象。

    // 返回参数的bool类型值,只有 bool和 string 满足条件
    bool convertToBool(Object arg) {
    if (arg is bool) return arg;
    if (arg is String) return arg.toLowerCase() == 'true'
    throw ArgumentError('Cannot convert $arg to a bool.');
    }
    

    dynamic: 类型的变量可以接受任何类型的值,并允许执行任何操作。编译时不检查成员的存在性,但是在运行时,如果调用的成员方法或变量不存在,就会出现runtime error。如果你想要灵活的动态调度,dynamic就是正确的选择。一句话,dynamic就是告诉编译器不用来检查我,运行时再说。 对于dynamic的使用,在网络请求后的json解析绝对是常见的场景之一。当我们通过接口拿到json字符串时,格式化后将其赋值给Map<String, dynamic>。这时我们并不用关心返回的json中value的精确类型。当我们使用时再进行精确的类型转换。

  3. 通过明确的类型申明来创建

  String name = 'Bob';  

在 Dart 语言中, 一个变量存储着一个指向值类型的指针,而不直接存储值本身。