簡介
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/
最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!