Flutter學習之Dart 中的對象操作符 以及 call 操作

說明

在 Dart 還有一部分特殊的操作符,用於對象的操作。比如:獲取對象的成員變量之前判斷對象是否存在 “?.”,用於類型轉換使用的 as,等,下面就通過代碼來做詳細的說明,

Dart 中的對象操作符

  • 條件成員訪問 ?.

  • 類型轉換 as

  • 是否指定類型 is,is!

  • 級聯操作 ..

條件成員訪問 ?.

class Person{
 String name;
  int age;
}

void main(){
  Person person;
  
  // 這裏會報錯,因爲都初始化出  person
  print(person.age);

  // 這裏不會報錯, ?. 是先判斷是否存在 person
  print(person?.name);
}

類型轉換 as 操作符

class Person{
 String name;
  int age;

  void work(){
    print("working...");
  }
}

void main(){
  var person ;
  person = "";
  person = new Person();

  // 將變量轉爲 Person 對象的格式,如果 不是 Person 對象,就會報錯
  (person as Person).work();
}

 

是否指定類型 is,is! 操作符

class Person{
 String name;
  int age;

  void work(){
    print("working...");
  }
}

void main(){
  var person ;
  person = "";
  
  // 判斷 person 變量是 Person 類的實例化出來的
  if (person is Person) {
  }

  // 判斷 person 變量不是 Person 類的實例化出來的
  if (person is! Person) {
  }
}

 

.. 級聯 操作

void main(){
  var person = new Person();

  // 這段表示給 age 和 name 賦值,然後調用 work 方法
  person..age=10
        ..name="Tommi"
        ..work();

  // 也可以這樣子寫,匿名類的方式
  new Person()
        ..age=10
        ..name="Tommi"
        ..work();
}

對象中的 call 方法

當我們聲明一個類的時候,如果給這個類指定一個 call 方法,就可以直接使用類名作爲方法名來調用 call 方法了。

 

class Person {
  String name;
  int age;

  call() {
    print("call object");
  }
}

void main() {
  Person person = new Person();
  person(); // call object
}

圖爲接收參數的 call 方法

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章