Flutter入門(二)------Dart語言

 

一.運算符

Dart支持各種類型的運算符,並且其中一些操作符還能進行重載。

該表中的操作符優先級由上到下逐個減少,上面行內的操作符優先級大於下面行內的操作符。

1.算術運算符

Dart常用的算術運算符。

Dart前綴和後綴遞增和遞減運算符。

++var執行前+1    var++執行後+1

--var執行前-1       var--執行後-1

示例代碼:

var a , b; 
a = O; 
b =++a ; //在b 獲得其值之前自增a
assert(a == b); // 1 == 1 

a = O; 
b=a++; //在b 獲得值後自增a
assert(a != b); // 1 != 0

 
a = O; 
b = --a; //在b 獲得其值之前自減a
assert{a == b); // -1 == -1

 
a = 0; 
b = a--;// 在b獲得值後自減a
assert{a != b);   // -1 != O

2.關係運算符

3.類型測試操作符

4.賦值操作符

可以使用=運算符賦值。要僅在變量爲 null 時賦值,請使用??=運算符

5.邏輯運算符

6.位運算符

通常我們指位運算爲<<或>>移動位運算,通過操作位的移動來達到運算的目的,而 &、|、^、~expr 也是操作位來達到運算的目的。

7.條件表達式

Dart 有兩個運算符,可用來簡明地評估可能需要 if-else 語句的表達式。 如下代碼即爲一種條件表達式,也可以稱爲三元表達式。 如果條件爲真,返回 exprl ,否則返回 expr2:

condition ? exprl : expr2

第二種如下所示, 如果exprl 爲非空, 則返回其值;否則, 計算並返回 expr2 的值:

exprl ?? expr2

8.級聯操作

級聯操作用兩個點(..)表示,可對同一對象執行一系列操作。類似於 Java 語言裏點點點處理或 JavaScript 裏的 Promise的 then 處理 。級聯操作主要的目的是爲了簡化代碼,示例如下:

二.流程控制語句

 1.Dart語言的流程控制語句如下:

   if和else    for(循環) 

   while和do-while(循環) 

   break和continue   

                 break爲跳出循環   continue爲只跳出本次循環,代碼還會繼續向下執行。

   switch和case   

   assert(斷言)    

                Dart 語言通過使用 assert 語句來中斷正常的執行流程,當 assert 判斷的條件爲 false 時發生中 斷。assert 判斷的條件是任何可以轉化 boolean 類型的對象,即使是函數也可以。如果assrt 的判斷爲true,則繼續執行下面的語句;反之則會拋出 一個斷言錯誤異常 AssertionError。

   try-catch和throw

2.異常處理

    異常是表示發生了意外的錯誤,如果沒有捕獲異常,引發異常的隔離程序將被掛起,並且程序將被終止。

    Dart 代碼可以拋出並捕獲異常,但與 Java相反, Dart 的所有異常都是未檢查的異常。方法不聲明它們可能拋出哪些異常,也不需要捕獲任何異常。 

    Dart 提供了異常和錯誤類型以及許多預定義的子類型。當然,也可以定義自己的異常。然而, Dart程序可以拋出任何非空對象。

     1.拋出異常

    2.捕獲異常

      你可以指定一個或兩個參數來捕獲異常( catch ),第一個是拋出的異常,第二個是堆棧跟蹤( StackTrace 對象)。

     

  3.Finally

  要確保某些代碼能夠運行,無論是否拋出異常,請使用 finally 子句。 如果沒有 catch 子句匹配異常, 則異常在 finally 子句運行後傳播。

 

三.面向對象

   Dart 爲高級語言支持面向對象的很多特性,並且支持基於 mixin 的繼承方式 基於 mixin 的繼承方式是指:一個類可以繼承自多 父類,相當於其他語言裏的多繼承 。所有的類都有 一個基類 Object ,這個特性類似於Java 語言, Java 所有的類也都是繼承自 Object, 也就是說一切皆爲對象

       使用 new 語句實例化一個類,如下所示

      // 實例化了 User 類的對象 user

       var user = new User ( 張三 ’, 20);

    1.實例化成員變量

   

     2.構造函數

       1.常規構造函數

      構造函數是用來構造當前類的函數,是一種特殊的函數,函數名稱必須要和類名相同 才行。

     

    2.命名的構造函數

        使用命名構造函數從另一類或現有的數據中快速實現構造函數

         

  3.構造函數初始化列表

    除了調用父類的構造函數,也可以通過初始化列表在子類的構造函數運行前來初始化 實例的成員變量值。

   

3.讀取和寫入對象

   get ()和 set()方法是專門用於讀取 和寫入對象的屬性的方法,每一個類的實例,系統都 隱式地包含有 get()和 set () 方法。

4.重載操作

    

class V {
  final int x;
  final int y;


  const V(this.x,this.y);

  //重載+號
  V operator +(V v){
    return new V(x+v.x,y+v.y);
  }

  //重載-號
  V operator -(V v){
    return new V(x-v.x,y-v.y);
  }

}

void main(){
    final a=new V(3,4);
    final b=new V(3,5);

    final aaa=a+b;
    print(aaa.x.toString()+ '=====' +aaa.y.toString());


    final bbb=a-b;
    print(bbb.x.toString()+ '=====' +bbb.y.toString());
}

5.繼承類

繼承就是子類繼承父類的特徵和行爲,使得子類對象 (實例)具有父類的實例域和方法;或子類從父類繼承方法,使得子類具有父類 相同的行爲。 Dart 裏使用extends 關鍵字來創建一個子類,super關鍵字來指定父類。

6.抽象類

抽象類類似Java語言中的接口。抽象類裏不具體實現方法,只是寫好定義接口,具 體實現留着調用的人去實現。抽象類可以使用abstract 關鍵字定義類。

7.枚舉類型

枚舉類型是一種特殊的類,通常用來表示相同類型的一組常量值。每個枚舉類型都用 於一個 index的getter ,用來標記元素的元素位置。第一個枚舉元素的索引是 0。 

8.Mixins

Mixins (混入功能)相當於多繼承,也就是說可以繼承多個類 。使用with 關鍵字來實 現Mixins 的功能。

四.泛型

泛型通常是爲了類型安全而設計的,適當地指定泛型類型會生成更好的代碼,可以 用泛型來減少代碼重複。Dart 中使用<T>的方式來定義泛型.

五.庫的使用

  1.引用庫

 通過 import 語句在一個庫中引用另一個庫的文件。 要注意以下事項

  a.在 import語句後面需要接上庫文件的路徑。

  b. 對 Dart 語言提供的庫文件使用 dart: xx 格式。

  c.對第三方的庫文件使用 package:xx 格式。

 2.制定一個庫的前綴

 當引用的庫擁有相互衝突的名字,可以爲其中一個或幾個指定不一樣的前綴。 這與命名空間的概念比較接近。

3.引用庫的一部分

show 關鍵宇:只引用 一點。

hide 關鍵字:除此之外都引用。

六.異步支持

   七.元數據

     使用元數據給代碼添加更多的信息。元數據是以 @開始的修飾符,在@後面接着編譯時的常量或調用一個常量構造函數。 目前 Dart 語言提供 三個@修飾符:

    @deprecated 被棄用的。   @override 重寫 。   @proxy代理。

    元數據可以修飾 library (庫) class (類) typedef(類型定義)、 type parameter (類 型參數) constructor (構造函數)、 factory (工廠函數) function (函數) field (作用域)、 parameter (參數) variable claration (變量聲明)

   

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