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);
輸出:
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 的最大的區別是在靜態型別檢查上,
Dart學習系列文章:https://www.cnblogs.com/jukaiit/category/1636484.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71574.html
標籤:Dart
下一篇:Golang error 的突圍
