dynamic 》》》直接翻譯過來可以是動態的
void main() //dynamic
dynamic x ='hal';
print(x.runtimeType);//數據類型
print(x);
x = 123;
print(x.runtimeType);
print(x);
var a = 'var';
print(a.runtimeType);
print(a);
// Object
Object o1 ='111';
print(o1.runtimeType);
print(o1);
o1.toString();
print(o1);
}
// dynamic ,var、object 三種類型的區別
// dynamic:所有dart 對象的基礎類型,在大多數情況下,不直接使用它
// 通過它定義的變量會關閉類型檢查,這意味着 dynamix x= 'hal'; x.foo();
// 這段貸款靜態類型檢查不會報錯,但是運行時會crash,因為x 並沒有foo() 方法,所以建議大家在編程時不要直接使用dynamic;
// var: 是一個關鍵字,意思是"我不關心這里的類型是什么",系統會自動判斷類型 runtimeType;
// object: 是Dart 對象的基類,當你定義: object o =xxx ;時這個時候系統會認為o 十個對象,你可以調用o的toString()和hashCode()方法
// 因為Object 提供了這些方法,但是如果你嘗試調用o.foo()時,靜態類型檢查會運行報錯。
// 綜上不難看出dynamic 與object 的最大的區別是在靜態類型檢查上。