官术网_书友最值得收藏!

  • 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));

主站蜘蛛池模板: 团风县| 永吉县| 庄河市| 尼勒克县| 鹿泉市| 广元市| 华蓥市| 萝北县| 黑龙江省| 南昌县| 西平县| 许昌市| 孟州市| 衢州市| 延寿县| 洛浦县| 韶山市| 漳州市| 松原市| 永仁县| 万安县| 晋州市| 海南省| 浦江县| 开平市| 嘉义市| 鱼台县| 东阿县| 永善县| 南靖县| 湄潭县| 黔南| 平南县| 乌拉特前旗| 千阳县| 霍州市| 卢氏县| 芦山县| 巴青县| 陆河县| 仁寿县|