Dart基礎 — Basic Types

ChunYi LI
One Two Swift
Published in
5 min readNov 2, 2021

Numbers

int

native platform:-2^63 ~ 2^63 - 1
Javascript:-2^53 ~ 2^53 - 1

int x = 1
int y = 0xDEADBEEF; //3735928559(16進制)

double

double x = 1.1;
double y = -3.1234;
double z= 8e5; //800000(e後面的數字為補0的次數)
double z1 = 8e-3; //0.008
double z2 = 0.8e2; //80

double 還有一些實用的 method 可以呼叫。

double x = 2.3;print(x.abs()); //2.3 取絕對值
print(x.ceil()); //3 無條件進位
print(x.floor()); //2 無條件捨去

如果今天你不確定要使用 int 或 double,你可以直接使用 num。

num 可以同時為 int 跟 double。
一但與 double 進行運算後,則不再為 int。

num x = 1;print(x is int); //true
print(x is double); //true
x += 1.2;
print(x is int); //false
print(x is double); //true

與 swift 不同的是,dart 的 int 跟 double 是可以比較跟運算的。

int x = 1;
double y = 2.7;
print(x + y); //3.7
print(x < y); //true

String

String name1 = '王小明'; //單引號
String name2 = "王大明"; //雙引號
String description = """//三引號
王小明的爸爸有塊地
王小明的爸爸有塊地
王小明的爸爸有塊地
""";
String name3 = name1 + name2; //王小明王大明 字串串接int age = 5;
print('大家好,我叫$name1,今年${age}歲。');
//字串內引用單值,$ 或 ${} 都可以,在字串內使用運算結果使用 ${}。

Boolean

bool isBigger = 3 > 1; //true
bool isEmpty = ''.isEmpty; //true
bool combine = isBigger && isEmpty; //true
var superman;
bool isSuperManExist = superman != null; // false

Lists

List<int> list1 = [1,2,3,4];
var list2 = [1,2,3,4];
var list3 = [0, ...list2]; //[0,1,2,3,4]
var list4; //optional
var list5 = [0, ...list4]; //error
var list6 = [0, ...?list4];//[0]

另外還有一個我覺得很屌的功能 XD
陣列裡面可以使用 if 判斷式來決定陣列內容

var bool = false;
List<String> titleList = [
"title1",
if (bool) "title2",
"title3",
"title4",
if (bool) "title5",
if (!bool) "title6"
];

print(titleList); //[title1, title3, title4, title6]

甚至可以使用 for 來產出陣列內容

List<int> list1 = [1,2,3,4,5];var list2 = [
for (var i in list1) i+=1
];
print(list2); //[2,3,4,5,6]

那可不可以 if 跟 for 混用呢?
Why Not !?

List<int> list1 = [1,2,3,4,5];var list2 = [
for (var i in list1) if(i > 2) i+=2
];
print(list2); //[5,6,7]

也與 swift 一樣有 map 之類的 method 可以使用。

List<int> list1 = [1,2,3,4,5];
var list2 = list1.map((element) => element += 3).toList();
print(list2); //[4, 5, 6, 7, 8]

Set

Set 是一個沒有排序的集合, 跟 Swift 的 Set就是一模一樣的東西。

Set<int> set1 = {1,2,3,4,5};set1[0] = 2; //compile error,set 沒有排序功能,故不能指定位置。

除沒有排序功能外,使用方法與其他Collections都一樣。

Map

Map 就是一個 key : value 的集合,相對於 Swift 就是 Dictionary。

Map<String,String> map1 = {
'1':'王小明',
'2':'王大明',
'3':'李小春',
'4':'李大春'
};
print(map1['1']); //王小明map1['5'] = '李小白';
print(map1['5']); //李小白

--

--

ChunYi LI
One Two Swift

Hi this is Chunyi-Li from Taiwan, a junior iOS deveoper