簡介
flutter是google在2015年dart開發者峰會上推出的一種開源的移動UI構建框架,使用flutter可以非常方便的編譯成執行在原始android,ios,web等移動平臺上的移動應用。
flutter是使用dart來編寫的,最新的flutter版本是2.5.3,而最新的Dart語言版本是2.14。
本系列將會深入談談dart語言的用法和最佳實踐,希望大家能夠喜歡。
dart中的變數
Dart語言吸取了java和javascript的精華,如果你是上述語言的開發者,那麼會很容易遷移到dart語言上。我們先從一個語言最基本的變數開始,探討dart語言的奧祕。
定義變數
Dart中定義變數和java,javascript中定義變數是一致的,如下所示:
var name = 'jack';
上面我們使用var表示name的型別是可以通過推斷得到。在程式編寫過程中,如果我們遇到某些變數並不知道其型別的時候,可以嘗試使用var,讓dart自行推斷。
當然,我們也可以指定變數的型別,如上所示,可以指定name為String型別:
String name = 'jack';
在dart中,所有的變數都是Object,而每個物件都是一個Class的例項。包括數字、函式、null都是Object。所有的物件都繼承自Object類。
所以上面的賦值也可以這樣寫:
Object name = 'jack';
變數的預設值
在dart中,未初始化的變數都有一個nullable型別的值,這個值的初始值是null。
和java中不一樣的是,dart中所有的number的初始值也是null。這是因為dart中的number也是一個物件。
如果一個變數可以為null,那麼在賦值的時候可以在變數型別後面加上?, 如下所示:
int? age;
對於類變數來說,只會在使用的時候進行初始化,這種初始化策略叫做延時初始化。
Late變數
Late修飾符是在Dart 2.12引入的新特性。他可以表示變數需要被延時載入,或者表示一個不為空的變數會在後續被初始化。
我們可以這樣使用:
late int age;
void main() {
age = 18;
print(age);
}
為什麼用late呢?因為有時候Dart無法檢查某些變數在使用之前是否被初始化了,但是如果你非常確定的話,使用late來修飾它即可。
另外,late修飾的變數只有在使用的時候才會被初始化,所以我們可以使用late來定義一些耗時、耗資源的操作。
常量
如果變數是不會變化的,那麼這就不是變數了,而是常量。
常量可以用final或者const來修飾,final變數表示變數只會被賦值一次。
而const變數表示變數會在編譯的時候被賦值,預設const也是final的。
如下所示:
final age = 18;
final int age = 18;
const age = 20;
如果const變數是class變數,那麼將其設定為static。
constant還可以用來賦值,如下所示:
var age = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`
上面的程式碼中,雖然age的值是const的,但是age本身並不是const,所以age是可以重新被賦值的:
foo = [18, 21, 23];
但是bar是final的,所以bar並不能被重新賦值。
總結
以上就是dart語言的變數使用了。
本文已收錄於 http://www.flydean.com/01-dart-variables/
最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!