dart系列之:dart語言中的變量


簡介

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/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!


免責聲明!

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



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