【Flutter 1-7】Flutter教程Dart語言——變數
- 2020 年 11 月 16 日
- 筆記
- Flutter, 移動端, 跨平台, 配置Flutter環境
作者 | 弗拉德
來源 | 弗拉德(公眾號:fulade_me)
2011年10月10日的GOTO大會上,Google的兩位工程師發布了「Dart」;Dart是一種全新的程式語言,旨在幫助開發者構建Web應用程式。Dart 1.0於2013年11月14日發布。我們日常開發Flutter使用的就是Dart語言,所以我們有必要了解一下Dart語言的使用方法。
類型安全的語言
Dart 語言是類型安全的語言,但是由於其支援類型推斷,因此大多數變數不需要顯式地指定類型:
例如
/// 初始化一個字元串
var name = 'Fulade';
/// Int類型
var year = 1995;
/// 浮點數類型
var antennaDiameter = 3.7;
/// 數組
var list = ['Java', 'Python', 'C++', 'C'];
/// 字典類型
var image = {
'tags': ['土星'],
'url': '//path/to/saturn.jpg'
};
變數
下面的示例程式碼將創建一個變數並將其初始化:
var name = 'Fulade';
變數僅存儲對象的引用。
這裡名為 name 的變數存儲了一個 String
類型對象的引用,'Fulade'
則是該對象的值。
name
變數的類型被推斷為 String
,但是你可以為其指定類型。
如果一個對象的引用不局限於單一的類型,可以將其指定為 Object
或 dynamic
類型。
dynamic name = 'Bob';
除此之外你也可以指定類型:
String name = 'Bob';
默認值
在 Dart 中,未初始化的變數擁有一個默認的初始化值:null
。即便數字也是如此,因為在 Dart 中一切皆為對象,數字也不例外。
int lineCount;
if(lineCount == null) {
print("line is null");
}
Final 和 Const
如果你不想更改一個變數,可以使用關鍵字 final
或者 const
修飾變數,這兩個關鍵字可以替代 var
關鍵字或者加在一個具體的類型前。一個 final
變數只可以被賦值一次;一個 const
變數是一個編譯時常量(const
變數同時也是 final
)。被final
修飾的變數在第一次使用的時候被初始化。
下面的示例中我們創建並設置兩個 final
變數:
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
你不能修改一個 final
變數的值:
name = 'Alice'; // Error: a final variable can only be set once.
使用關鍵字 const
修飾變數表示該變數為 編譯時常量。如果使用 const
修飾類中的變數,則必須加上 static
關鍵字,即 static const
(注意:順序不能顛倒。在聲明 const
變數時可以直接為其賦值,也可以使用其它的 const
變數為其賦值:
const bar = 1000000; // 直接賦值 [Unit of pressure (dynes/cm2)]
const double atm = 1.01325 * bar; // 利用其它 const 變數賦值 (Standard atmosphere)
const
關鍵字不僅僅可以用來定義常量,還可以用來創建常量值,該常量值可以賦予給任何變數。你也可以將構造函數聲明為 const
的,這種類型的構造函數創建的對象是不可改變的。
var foo = const [];
final bar = const [];
const baz = []; // 相當於 `const []` (Equivalent to `const []`)
如果使用初始化表達式為常量賦值可以省略掉關鍵字 const
,比如上面的常量 baz
的賦值就省略掉了 const
沒有使用 final
或 const
修飾的變數的值是可以被更改的,即使這些變數之前引用過 const
的值。
foo = [1, 2, 3]; // foo 的值之前為 const [] (Was const [])
常量的值不可以被修改:
baz = [42]; // 報錯:常量不可以被賦值。(Error: Constant variables can't be assigned a value.)