Dart 型別幾個知識點

2021-10-01 01:59:39 字數 1805 閱讀 1743

一、mixins

mixins是乙個前端很火的概念,是乙個重複使用類中**的方式。

class a 

}class b

}class c = a with b; // 使用with關鍵字,表示類c是由類a和類b混合而構成

void main()

二、非同步

dart提供了類似es7中的async await等非同步操作,這種非同步操作在flutter開發中會經常遇到,比如網路或其他io操作,檔案選擇等都需要用到非同步的知識。 async和await往往是成對出現的,如果乙個方法中有耗時的操作,你需要將這個方法設定成async,並給其中的耗時操作加上await關鍵字,如果這個方法有返回值,你需要將返回值塞到future中並返回,如下**所示:

futuregetnetdata() async 

main() );

}

三、變數

1、var

var 宣告變數並自動推斷型別

dart 中,有乙個變數可以指定型別宣告,如下

string s = 's1';

int i = 2;

double f = 2.2;

這些,也完全可以使用 var 來處理,讓編譯器自動推斷;

var s = 's1'; // type string

var i = 2; // type int

var f = 2.2; // type double

2、dynamic

無論是 var 還是 int 等型別宣告的變數,再次賦值其他型別會報錯,如下:

var s = 's1';

s = 1;

如果使用 dynamic 申明的變數,則可以進行此操作

dynamic s = 's1';

print(s); // 值為 s1

s = 1;

print(s); // 值為 1

3、const 與 final

共同點:

void main()

不同點:

1、const 隱式的 final,不單單可以約束變數,也可以約束變數的值。

void main()

使用 final ,列印正常,結果為 [1, 2]

若把 final 改為 const ,則會報錯

因此,若定義固定的 list(或 map 或其他型別等),明確後續不再改變它,那麼 const 就有用了

可以看出,final 與 const,類似於 python 的 淺複製 與 深複製

2、const 為編譯時常量,final 為執行時常量

const dt = const datetime.now(); //錯誤,因為時間是在執行時候確定的

final dt = datetime.now(); //正確,執行時有確定的值

3、記憶體中重複建立

const a1 = [11 , 22];

const a2 = [11 , 22];

print(identical(a1, a2));//true

final a1 = [11 , 22];

final a2 = [11 , 22];

print(identical(a1, a2));//false

幾個知識點

1 記憶體對齊 2 mvc與ssh框架對應關係 3 面試相關 4 非c 內建型別a和b,在哪幾種情況下b能隱式轉化為a?case 4 賦值操作,雖不是正宗的隱式型別轉換,但也可以勉強算乙個 5 extern c 的慣用法 1 在c 中引用c語言中的函式和變數,在包含c語言標頭檔案 假設為cexamp...

幾個新學知識點

檢視目錄下最新建立的第乙個檔案 ls t 1 head n 1 bz2 檔案解壓 先用bzip2 d tar.bz2解壓成tar檔案 然後用tar xvf 解壓 bzip2的使用資訊可以通過bzip2 help 檢視 yum安裝包之後如何檢視包所在的路徑 一thunderbird為例 1 rpm q...

mysql幾個知識點

1.insert鎖表,insert語句加where條件,資料庫將鎖定整個表,以避免插入重複資料,可用作處理併發問題 資料庫層面的鎖比應用層面的效率高很多。2.tinyint 1 返回值,長度為1時,返回值是true和false。3.時間觸發器,create event on schedule eve...