dynamic 表示是動態的,數據類型是指任意類型編程
var a; a = 10; a = "Dart"; print(a); dynamic b = 20; b = "JavaScript"; print(b); print(b.runtimeType); var list = new List<dynamic>(); list.add(1); list.add("hello"); list.add(true); print(list); print("\n"); dynamic x ='hal'; print(x.runtimeType);//數據類型 print(x); x = 123; print(x.runtimeType); print(x); var a1 = 'var'; print(a1.runtimeType); print(a1); // Object Object o1 ='111'; print(o1.runtimeType); print(o1); o1.toString(); print(o1);
輸出:spa
Dart JavaScript String [1, hello, true] String hal int 123 String var String 111 111
dynamic、var、object 三種類型的區別dynamic:全部dart 對象的基礎類型,在大多數狀況下,不直接使用它經過它定義的變量會關閉類型檢查,這意味着 dynamix x= 'hi'; x.foo();這段代碼靜態類型檢查不會報錯,可是運行時會crash,由於x 並無foo() 方法,因此建議你們在編程時不要直接使用dynamic;var: 是一個關鍵字,意思是"我不關心這裏的類型是什麼",系統會自動判斷類型 runtimeType;object: 是Dart 對象的基類,當你定義: object o =xxx ;時這個時候系統會認爲o 十個對象,你能夠調用o的toString()和hashCode()方法由於Object 提供了這些方法,可是若是你嘗試調用o.foo()時,靜態類型檢查會運行報錯。綜上,dynamic 與object 的最大的區別是在靜態類型檢查上。