dart變量與類型(官方文檔)
var,靜态類型,null
var
使用var定義變量,類型由編譯器推斷
靜态類型
用靜态類型定義變量,編輯器能夠使用這些靜态類型,提供編譯警告
null
未初始化的變量的值是null
所有皆對象
dart所有類型都是對象類型
num、bool、string、list、map
num類的文檔說明
math api文檔說明
使用${express}
用+
用三個"
list數組,map字典
容器裡的元素需要有類型的,dart判斷好類型後,後續像容器加入的元素要滿足該類型,否則編譯失敗
初始化時添加限制
可以拿到runtimetype
sth.runtimetype為變量運作時的類型
const final
const是指編譯期間确定的值,final是可以在運作時确定的,确定後不能變
if-else、for、while、do-while、break/continue、switch-case、assert
dart函數、類和運算符
可以作為參數傳遞,支援箭頭函數,可命名參數和可選參數(完成重載的功能)
可選命名參數:加上{},可忽略參數,加上[]
意思是,少傳了這兩個參數,不會報錯。
類似java的聲明,類似c++的初始化清單,構造函數重定向(對比其和javascript的不同),類的複用
初始化清單
在構造函數後,用一個: 後面對變量進行操作
重定向構造函數
寫一個函數,帶有構造的作用,這個函數的初始化清單調用原構造函數
其他類變量在本類中複用,繼承、接口和混入(mixin)
繼承(extends)
子類由父類派生,會自動擷取父類的成員變量和方法實作,子類可以根據需要覆寫構造函數及父類方法;
接口實作(implements)
子類擷取到的僅僅是接口的成員變量符号和方法符号,需要重新實作成員變量,以及方法的聲明和初始化,否則編譯器會報錯
混入(with)
?. ??= ?? 三種運算符
?. 運算符
<code>p?.printinfo()</code> ,表示 p 為 null 的時候跳過,避免抛出異常。
??= 運算符
預設值兜底,如果 a 為 null,則給 a 指派 value,否則跳過. <code>a??=value</code>
?? 運算符
如果 a 不為 null,傳回 a 的值,否則傳回 b,<code>a ?? b</code>
operator關鍵字
官方文檔位址