Dart 知識點 - 資料型別
攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第1天,點選檢視活動詳情
Dart 這個知識點,會寫成一個系列的文章。我們以資料型別開始~
推薦使用線上編輯器 dartpad.cn 進行學習,測試~
Number 數字型別
- Number 數字型別,包含
- int 整型
- double 浮點型
int
和 double
都是 num 的子類。
```bash int a = 1; print(a); // 1
double b = 2.0; print(b); // 2.0
num c = -3; print(c); // -3 ```
String 字串型別
Dart
支援使用雙引號和單引號來建立字串。使用 String
來定義變數,表明該變數是字串型別。Dart
中字串型別的使用跟 JavaScript
中字串的使用相似:
字串拼接
使用 +
符號進行拼接
bash
String s1 = 'Hello ';
String s2 = 'World!';
String s3 = s1 + s2;
print(s3); // Hello World!
轉義字元處理
使用 \
來表示
```bash String s1 = 'I\'m Jimmy.' print(s1); // I'm Jimmy.
String s2 = "第一行文字\n第二行文字"; print(s2); // 第一行文字 // 第二行文字 ```
多行文字
我們可以使用 '''
或者 """
來表示,比如上面的 "第一行文字\n第二行文字"
我們可以這樣寫:
bash
'''
第一行文字
第二行文字
'''
// 或者
"""
第一行文字
第二行文字
"""
字串插值
在字串中,我們使用 ${表示式}
的形式使用表示式
bash
String s1 = 'my name is Jimmy.';
print('Hello, ' + s1); // Hello, my name is Jimmy.
print('Hello, ${ s1 }'); // Hello, my name is Jimmy.
print('Hello, ${ s1.substring(10, 1) }!'); // Hello, Jimmy.
Boolean 布林型別
我們先來看下下面的程式碼:
bash
String str = '';
if(str) {
print('true');
} else {
print('flase');
}
那上面的程式碼會列印什麼呢?true
或者 false
呢?
上面的程式碼會報錯:
bash
Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
if(str) {
^
Error: Compilation failed.
在 if(str)
這裡,編譯失敗,因為在 dart
語言裡面,變數值必須是 true
或者 false
才行。改寫下上面的程式碼:if(str) => if(str.isEmpty)
即可通過編譯。
所以讀者不要把 JavaScript
判斷布林值的方式帶過來 Dart
這裡編寫:
| | JavaScript (false) | Dart (true) | | --- | --- | --- | | var variable = 0 | variable (false) | variable <= 0 (true) | | var variable = null | variable (false) | variable == null (true) | | var variable = '' | variable (false) | variable.isEmpty (true) | | var variable = NaN | variable (false) | variable.isNaN (true) | | var variable = true | variable (true) | variable (true) |
所以,你直接定義布林型別變數的時候,正確的姿勢應該是這樣:
bool flag = true
// 或者
bool flag = false
list 陣列型別
這裡的 list
我理解成陣列,因為這跟 JavaScript
裡面的 array
很類似~
bash
List arr = ['Hello ', 'World!'];
// 陣列的長度
print(arr.length); // 2
// 陣列的取值
print(arr[0]); // Hello
// 陣列的賦值
arr[1] = 'Jimmy. ';
print(arr.join('')); // Hello Jimmy.
// 擴充套件運算子
var list = ["I\'m ", 'come ', 'from ', 'China.'];
print([...arr, ...?list].join('')); // Hello Jimmy. I'm come from China.
...?
為空感知擴充套件操作符,如果擴充套件操作符右邊的變數值可能是null
, 我們可以使用...?
來避免產生異常
Set 集合型別
集合有三個特性;
- 無序性:每個元素的地位都是相同的,元素之間無序。
- 互異性:每個元素只能出現一次。
- 確定性:給定一個集合,任何一個元素,該元素
或者屬於或者不屬於
該集合,二者必居其一,不允許模稜兩可的情況出現。
使用如下:
bash
// 定義集合
Set set = new Set();
// 集合的大小
print(set.length); // 0
// 新增元素
set.add('Hello ');
set.add('World!');
print(set); // {Hello , World!}
// 判斷集合中是否存在指定元素
print(set.contains('Jimmy')); // false
// 一次新增多個列表元素
set.addAll(["I\'m ", 'come ', 'from ', 'China.']);
print(set); // {Hello , World!, I'm , come , from , China.}
// 移除指定的元素
set.remove('World!');
print(set); // {Hello , I'm , come , from , China.}
Map 物件型別
把 Map
理解成物件,是因為這跟 JavaScript
中的物件很類似。
bash
// 定義物件
Map map = new Map();
// 物件的大小
print(map.length); // 0
// 新增物件屬性
map['name'] = 'Jimmy';
map['country'] = 'China';
print(map); // {name: Jimmy, country: China}
// 讀取屬性值
print(map['name']); // Jimmy
// 讀取物件的 keys 值
print(map.keys); // (name, country)
// 讀取對物件的 values 值
print(map.values); // (Jimmy, China)
Runes 和 Symbols
在 Dart
中,runes 公開了字串的 Unicode 碼位。Symbol 表示 Dart 中宣告的操作符或者識別符號。
因為這兩個使用較少,這裡就不進行介紹。後面需要使用到再補充...
補充
不知道讀者有沒有留意到,我定義變數的時候有時候也用到了 var
,那麼它究竟是什麼呢?
var
是 Dart
語言使用的關鍵字,是 variable
的簡寫,表明這是一個泛型呼叫(generic invocations)。
bash
var name = 'Jimmy'; // 泛型呼叫,表明變數型別不知道是啥
String name = 'Jimmy'; // 型別註釋,表明我一定是 String 型別
當然,還有 const
和 final
的使用。
如果讀者覺得文章還可以,不防一鍵三連:關注➕點贊➕收藏
- 前端開發中 5 個很讚的資源
- 懂點心理學 - 馬太效應
- Flutter 構建一個 todo list 應用
- Dart 知識點 - 資料型別
- Dart 知識點 - 混入 Mixin
- Dart 知識點 - 集合 List, Set, Map
- Flutter - 使用 push(), pop() 和路由進行導航
- Dart 知識點 - 面向物件基礎
- Flutter: Stateful 掛件 vs Stateless 掛件
- Flutter 實現登入 UI
- Dart 知識點 - 抽象類和介面
- 自 2020 年以來全球的開源商業化軟體融資情況
- IstioCon 2022 回顧及錄影、PPT 分享
- 網頁實現 1CM 物理長度
- Flutter 開發出現的那些 Bugs 和解決方案「持續更新... 」
- 仿寫新聞客戶端
- Beyond Istio OSS —— Istio 服務網格的現狀及未來
- 在外企的工作生活「年中總結」
- 如何在 Istio 中整合 SPRIRE?
- Javascript尾遞迴程式設計