- Flutter之旅
- 張德立
- 1062字
- 2020-09-08 18:11:40
2.1.1 常用的數(shù)據(jù)類型
Dart的常用數(shù)據(jù)類型如下:
數(shù)字類型
Dart語(yǔ)言中,num、int和double都是類,也就對(duì)象級(jí)別,默認(rèn)值為null,這不同于Java的基本數(shù)據(jù)類型,而且Dart語(yǔ)言沒(méi)有float、long等數(shù)據(jù)類型。下面的代碼表示用整型乘除浮點(diǎn)型時(shí),結(jié)果是浮點(diǎn)型:
布爾類型
Dart語(yǔ)言中的布爾類型也是嚴(yán)謹(jǐn)?shù)模挥衪rue和false兩個(gè)值。布爾類型作為判斷的標(biāo)識(shí),活躍在各大語(yǔ)言的邏輯判斷中。現(xiàn)在絕大多數(shù)語(yǔ)言的布爾運(yùn)算都是嚴(yán)謹(jǐn)?shù)模梅ㄒ脖容^簡(jiǎn)單。注意,關(guān)鍵字是bool,這和Java是不同的:
---->[day2/02/bool.dart]---- bool isMan = true; bool isMarried = false;
字符串類型
字符串是編程語(yǔ)言中不可或缺的部分。說(shuō)它簡(jiǎn)單,拼拼合合,非常簡(jiǎn)單;說(shuō)它難,正則一出馬,它也難如登天。需要注意的是,在Dart語(yǔ)言中,字符串支持單引號(hào)、雙引號(hào)以及三引號(hào),其中,單引號(hào)和雙引號(hào)中的雙引號(hào)需要轉(zhuǎn)義,三引號(hào)會(huì)將內(nèi)容原樣輸出,連注釋都無(wú)法“逃脫”。另外,${exp}可以在字符串內(nèi)插入字符串表達(dá)式exp,示例如下:
列表類型
列表可以根據(jù)泛型盛放多個(gè)同類元素,在編程語(yǔ)言中也是必備的類型。Dart語(yǔ)言中的List也是一個(gè)類,在使用方式上你會(huì)感覺(jué)它像數(shù)組。不過(guò)它可以隨意對(duì)元素進(jìn)行增刪改查,示例如下:
---->[day2/02/list.dart]---- List<String> languages = ['Java', 'Dart', 'Python', 'C++', 'Kotlin']; print(languages[0]); //Java 訪問(wèn)索引為0的元素 languages.add("JavaScript");//添加元素 print(languages.length);//6 數(shù)組長(zhǎng)度 languages.removeAt(1);//移除第一個(gè)元素 languages.insert(3, "PHP");//定點(diǎn)插入 print(languages);//[Java, Python, C++, PHP, Kotlin, JavaScript] print(languages.getRange(3, 5));//(PHP, Kotlin) 獲取指定訪問(wèn)的元素 print(languages.sublist(2, 4)); //[C++, PHP] 截取 print(languages.join("!")); //Java!Python!C++!PHP!Kotlin!JavaScript print(languages.isEmpty);//false 獲取指定訪問(wèn)的元素是否為空 print(languages.contains("Ruby"));//false 是否包含 languages.clear();//清空
關(guān)于列表,這里介紹幾個(gè)要點(diǎn):
---->[元素類型轉(zhuǎn)化:通過(guò)map函數(shù)遍歷列表并生成新元素列表]---- List<String> strNum = ['11', '23', '34', '24', '65']; var intNum= strNum.map((String str)=> int.parse(str)).toList(); print(intNum);//[11, 23, 34, 24, 65] ---->[條件遍歷過(guò)濾出列表:通過(guò)map函數(shù)遍歷列表并生成新元素列表]---- var bigThan30= intNum.where((int num)=>num>30).toList(); print(bigThan30);//[34, 65] ---->[列表解構(gòu)]---- var parser=[0,100,...intNum,30]; print(parser);//[0, 100, 11, 23, 34, 24, 65, 30] ---->[構(gòu)造列表時(shí)允許執(zhí)行if語(yǔ)句]---- bool flag=bigThan30.length >= 3; var chooseLi=[if(!flag) 666,...parser,if(flag) 555 else 55]; print(chooseLi);//[666, 0, 100, 11, 23, 34, 24, 65, 30, 55]
集合類型
眾所周知,集合和列表的區(qū)別在于集合中的元素不能重復(fù)。所以添加重復(fù)元素時(shí)會(huì)返回false,表示沒(méi)加進(jìn)去。這就像數(shù)學(xué)中的集合,Set類中也包含集合運(yùn)算的方法:
---->[day2/02/set.dart]---- Set<String> languages = {'Java', 'Dart', 'Python', 'C++', 'Kotlin',"Java"}; print(languages);//{Java, Dart, Python, C++, Kotlin} print(languages.add('Java'));//false 表示沒(méi)添加進(jìn)去 print(languages.add('JavaScript'));//true print(languages.contains("Dart"));//true 是否存在 languages.remove("JavaScript");//移除元素 print(languages.toList());//列表化 //[Java, Dart, Python, C++, Kotlin] languages.forEach((e){print(e);});//遍歷 print({1,2,3,4}.difference({2,3,6}));//{1, 4},兩個(gè)不同元素構(gòu)成的集合 print({1,2,3,4}.union({2,3,6}));//{1, 2, 3, 4, 6} 并集 print({1,2,3,4}.intersection({2,3,6}));//{2, 3} 交集
映射類型
Map作為若干個(gè)鍵值對(duì)的容器,享有映射之名。要注意一個(gè)Map對(duì)象的鍵不能重復(fù),值可以重復(fù)。在Dart語(yǔ)法中,Map比較靈活,和列表之間相互轉(zhuǎn)化非常方便:
---->[day2/02/map.dart]---- Map<String,num> dict = {"a": 1, "b": 30, "c": 70, "price": 40.0}; print(dict); //{a: 1, b: 30, c: 70, price: 40.0} print(dict["price"]); //40.0 dict["a"] = 2;//修改 print(dict); //{a: 2, b: 30, c: 70, price: 40.0} print(dict.containsKey("price")); //true 是否包含鍵 print(dict.containsValue("price")); //false 是否包含值 print(dict.isEmpty); //false 是否為空 print(dict.isNotEmpty); //true 是否不為空 print(dict.length); //4 長(zhǎng)度 dict.remove("c");//移除 print(dict); //{a: 2, b: 30, price: 40.0} print(dict.keys.toList());//[a, b, price] 將鍵轉(zhuǎn)為數(shù)組 print(dict.values.toList());//[2, 30, 40.0] 將值轉(zhuǎn)為數(shù)組 List<int> numLi=[1,2,3,4,5]; List<String> numEN=["one","two","three","four","five"]; List<String> numCN=["壹","貳","叁","肆","伍"]; Map<int,String> mapEN= Map.fromIterables(numLi, numEN); Map<int,String> mapCN= Map.fromIterables(numLi, numCN); print(mapCN);//{1: 壹, 2: 貳, 3: 叁, 4: 肆, 5: 伍} print(mapEN);//{1: 壹, 2: 貳, 3: 叁, 4: 肆, 5: 伍} // {1: one, 2: two, 3: three, 4: four, 5: five} print(Map.fromIterables(mapEN.values, mapCN.values));
- Spring 5.0 By Example
- Python for Secret Agents:Volume II
- Mastering Python High Performance
- 精通Python自然語(yǔ)言處理
- Julia高性能科學(xué)計(jì)算(第2版)
- Haskell Data Analysis Cookbook
- Windows內(nèi)核編程
- 深入分布式緩存:從原理到實(shí)踐
- Creating Stunning Dashboards with QlikView
- 智能手機(jī)APP UI設(shè)計(jì)與應(yīng)用任務(wù)教程
- R數(shù)據(jù)科學(xué)實(shí)戰(zhàn):工具詳解與案例分析
- ScratchJr趣味編程動(dòng)手玩:讓孩子用編程講故事
- 硬件產(chǎn)品設(shè)計(jì)與開(kāi)發(fā):從原型到交付
- 邊玩邊學(xué)Scratch3.0少兒趣味編程
- Qt 5.12實(shí)戰(zhàn)