Dart語言學習(八) dynamic


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM