2.认识Dart中的对象和变量

目录传送门:《Flutter快速上手指南》先导篇
html

万物皆对象

在 Dart 中,万物皆对象,包括函数。git

全部的对象都继承自 Object 类。github

而且,全部对象的默认值都是 nullapi

void main() {
  var test_var;
  print("value = $test_var");
}


>>>
value = null
复制代码

如何声明变量

  1. 使用 var 关键字数组

    var name = 'Bob';
    复制代码

    使用 var 能够声明一个不定类型的变量,但当该变量被第一次赋值时,该变量类型就被肯定。bash

    今后,你不能再改变该变量的类型,任何错误的尝试,你都会获得编译器的报错。函数

    eg:post

    name = 1;
    
    
    >>>
    A value of type 'int' can't be assigned to a variable of type 'String'. 复制代码
  2. 使用 dynamicObjectui

    这两个家伙具备一样的效果!spa

    它们均可以达到声明一个可变类型的变量的效果,即你能够随时使用该变量来指向任何一种类型的对象。

    固然,编译器是不会告诉你你犯了任何的错误,它只会让你的代码被顺利的编译 😄

    确切来讲,dynamic 其实是一个关键字,而 Object 之因此有一样的效果,彻底是由于任何对象类型,都源自于它。

    因此你看,它两具备一样的效果,但具备不一样的原理。

    eg:

    void main() {
      dynamic name = "Bob";
      print("value = $name");
      name = 1;
      print("value = $name");
    }
    
    
    >>>
    value = Bob
    value = 1
    复制代码

    换成 Object 也会获得一样的结果。

  3. 使用具体对象声明

    String name = 'Bob';
    复制代码

    对此,我想我不用有太多的解释。

  4. 使用 finalconst

    若是你但愿一个对象被初始化后,不能再被修改,那么你应该使用这两个关键字。

    final name = 'Bob';
    final String nickname = 'Bobby';
    
    const bar = 1000000;
    const double atm = 1.01325 * bar;
    复制代码

    到如今为止,它两看起来没什么差异。

    const 厉害的地方在于,它是编译时常量的关键字,你在编译期就须要肯定它的初始值。

    而 final 只会在运行时才要求肯定初始值。

    const 除了能够声明一个不可变的常量外,还能够用来建立常量数组。

    void main() {
      var userInfo = const [];
      final githuber = const ['CoorChice'];
      const nums = [1, 2, 3];
    
      userInfo = ['bob', 2];
      print(userInfo);
    }
    
    
    >>>
    [bob, 2]
    复制代码

    第一项之所可以被改变,是由于咱们定一个是个 const [] 常量数组。

    而剩余两项初始化后不能被改变对象的值,finalconst 都是被做为常量关键字被使用的,而被它们修饰的变量,不能再修改其值。

扩展

  • ??= 操做符

    考虑如下例子:

    b ??= value;
    复制代码

    若是 b 为 null,就会把 value 赋值给 b。

    若是 b 不为 null,则仍然保持原值。

目录传送门:《Flutter快速上手指南》先导篇

如何找到我?

传送门:CoorChice 的主页

传送门:CoorChice 的 Github

相关文章
相关标签/搜索