前情提要
上篇介紹完Dart
語言開發環境與第一支Hello World程式後,這篇要來介紹資料型別與變數,筆者就以官方Dcoument
文件中的Language>Tour
為主,參考其介紹方式,解釋各個資料型別,此篇主要介紹Numbers
這個資料型別。
內容
筆者這邊還是簡單列一下筆者這邊的開發環境
- 作業系統:Mac OS
- Dart版本:
2.17.6
- 編輯器:Visual Studio Code
Numbers
int
畢竟Flutter
框架透過Dart
程式語言撰寫各種跨平台應用程式,因此大小區間依照運行的環境而不一樣,移動式裝置環境中為-2^63~2^63-1
,Web
環境中為因JS
語言特性而-2^53~2^53-1
double
依照IEEE 754
標準宣告而成的浮點數
宣告方式
1 | // 無小數點為int |
其中特別的是也可以直接宣告為num
,令該變數可以是int
,也可以是double
1 | num x = 1; // x can have both int and double values |
若宣告變數為double
時,未加小數點也是可以的
1 | double z = 1; // Equivalent to double z = 1.0. |
轉換型別
撰寫程式過程避免不了轉換型別,那Dart
程式語言中是如何實作的呢,讓筆者帶大家來看看,因Numbers
分為int
及double
,針對這兩種有不一樣的撰寫方式
1 | // String -> int |
當然也會有時機點從Numbers
轉換至Strings
的情形
1 | // int -> String |
位元與移位運算子
畢竟我們撰寫的程式,最終都要轉換成01
的形式於終端設備中運行,有些應用免不了操作這種低階形式的運算,包含
<<
左移位>>
右移位>>>
不帶正負號的向右移位&
AND|
OR^
XOR
1 | assert((3 << 1) == 6); // 0011 << 1 == 0110 |
算數運算子
這就筆者不用多說了,Numbers
理所當然的有算術相關的運算子,如下
+ 運算子
- 運算子
* 運算子
/ 運算子
~/ 運算子
% 運算子
其中比較特別的是除法相關的運算子,若想要得到完整的商數則使用一般的/符號
,若只想得到商數中的整數部份則使用~/符號
1 | assert(5 / 2 == 2.5); // Result is a double |
其他相關方法
abs()取絕對值
ceil()無條件進位
floor()無條件捨去
1 | void main() { |
dart:math函式庫介紹
筆者這邊就先帶過,傳達數字操作時有一個現成的函式庫可以使用(載入外部套件詳細使用方式,會有專篇說明),使用方式如下
1 | // import關鍵字載入欲使用套件 |
比較會用到的部份就取得Random
數字的函式
1 | var intValue = Random().nextInt(10); // Value is >= 0 and < 10. |
詳細請參考dart:math
的完整API
列表資訊
https://api.dart.dev/stable/2.17.6/dart-math/dart-math-library.html
結論
哇,原本筆者打算透過一篇文章帶過所有資料型別,但看官方文件,有很多放著連結說,詳細請看此,點過去後不得了,根本可以寫好幾篇的程度,但是還是為了篇幅,筆者還是以一個Numbers
及相關函式集結在一起,變成一篇獨立的篇幅呈現,希望對大家有幫助,下篇再見啦。
參考
- https://dart.dev/guides/language/language-tour
- https://dart.dev/guides/language/language-tour#bitwise-and-shift-operators
- https://api.dart.dev/stable/2.17.6/dart-math/dart-math-library.html
- https://dart.dev/guides/language/numbers