Dart 基礎(chǔ)數(shù)據(jù)類(lèi)型
如何學(xué)習(xí)一門(mén)新的語(yǔ)言?
建立興趣
對(duì)于學(xué)習(xí)來(lái)說(shuō)每個(gè)人都有自己的方式和方法,每個(gè)人的習(xí)慣和思維模式都不太一樣,但每當(dāng)碰到這個(gè)問(wèn)題的時(shí)候,很多的人都會(huì)選擇以很難來(lái)逃避,記得之前GitHub上有一則很有趣的事情,NodeJS的發(fā)明者,又推出了一個(gè)新的框架,本來(lái)時(shí)間很好的事情,有個(gè)哥們就提了一個(gè)issuess說(shuō)求大神別再更新了,學(xué)不動(dòng)了。這個(gè)同學(xué)這樣的想法并非他一個(gè)人所面臨的,很多人都有這樣的想法。但是時(shí)代進(jìn)步的腳步是不會(huì)停止的,我們需要面臨的新鮮事物會(huì)層出不窮,不單單是技術(shù)這方面,其他生活方面也是一樣。所以我們不能逃避或者退縮,新鮮的事物總有新鮮之處,你若想了解他,就去研究他,自然就會(huì)產(chǎn)生興趣。千萬(wàn)不要為了追趕而去學(xué)習(xí),要建立興趣,一旦興趣建立了,人也就主動(dòng)了,思維也會(huì)隨之變得開(kāi)闊起來(lái),自然而然學(xué)習(xí)就不是問(wèn)題了。
學(xué)習(xí)新語(yǔ)言
學(xué)習(xí)一門(mén)新的技術(shù)語(yǔ)言,即使并不是很難,和我們?nèi)藢W(xué)說(shuō)話是差不多的,從咿呀學(xué)語(yǔ)到侃侃而談。<br />學(xué)習(xí)程序語(yǔ)言也是這樣,最開(kāi)始模仿到熟練。大致的思路如下
- 簡(jiǎn)單瀏覽技術(shù)文檔
- 從最簡(jiǎn)單開(kāi)始,不要眼高手低
- 模仿別人已經(jīng)寫(xiě)好的代碼自己去敲一邊,運(yùn)行結(jié)果
- 思考代碼的意思,遇到不會(huì)的點(diǎn)再仔細(xì)去看相關(guān)的文檔
- 總結(jié)學(xué)習(xí)的知識(shí)點(diǎn)
- 研究更深入的問(wèn)題<br /><br />
簡(jiǎn)單的來(lái)說(shuō)就是,先學(xué)會(huì)用,然后熟練會(huì)用,最后達(dá)到知道會(huì)用,前期照貓畫(huà)虎,后期升華。
Dart語(yǔ)言介紹
直接引用維基百科關(guān)于Dart的介紹
類(lèi)似JavaScript,Dart也是一種面向?qū)ο笳Z(yǔ)言,但是它采用基于類(lèi)編程。它只允許單一繼承,語(yǔ)法風(fēng)格接近C語(yǔ)言。
Dart Hello World
void main() {
print("hello world");
}
Dart語(yǔ)言提供的基礎(chǔ)數(shù)據(jù)類(lèi)型
numbers
int 整數(shù)
在Dart VM上值的范圍為-2到2 - 1,編譯為Javascript使用的Javascript的num實(shí)現(xiàn)兼容,允許值為-2到2 - 1
<a name="double"></a>
double
雙精度浮點(diǎn)數(shù)
import 'dart:math' as math;
void validationIntAutoConvertToDouble(double first, double second) {
print('a + b = ${first + second}');
}
void main() {
int a = 1;
double b = 1;
print('a + b = ${a + b}');
print('a - b = ${a - b}');
print('a * b = ${a * b}');
print('a / b = ${a / b}');
validationIntAutoConvertToDouble(2, 3);
}
strings
在Dart中字符串可以用單引號(hào)也可以使用雙引號(hào)
//單引號(hào)
var str = 'hello';
//雙引號(hào)
var str2 = "hello world";
//多行文本
var multiLineStr = '''
hello world Dart Language
''';
//字符串拼接1
var str3 ='$str' '$str2';
//字符串拼接2 不推薦
var str4 = str + str2;
//字符串截取
var str5 =multiLineStr.substring(1,2);
//判斷字符串是否包含
multiLineStr.contains('2');
//字符串相等
str.compareTo(str2);
//字符串以莫哥字符串結(jié)尾
str.endsWith('aaa');
//判斷字符串為空或非空
str.isEmpty;
str.isNotEmpty;
//獲取字符串的長(zhǎng)度
str.length;
//獲取莫一個(gè)字符所當(dāng)前字符串的索引
str.indexOf('a');
//替換str中所有的a為b
str.replaceAll('a', 'b');
//以某個(gè)特殊字符分割當(dāng)前字符串 返回一個(gè)數(shù)組
str.split(',')
string中還有其他的相關(guān)API,可以自行查看官方文檔
booleans
真或假,true或false
lists
類(lèi)似與javascript中的數(shù)組
//空集合
var list = [];
//list 的長(zhǎng)度
list.length;
//添加元素
list.add(1);
//移除元素
list.remove(1);
//在list最后添刪除元素
list.removeLast();
//批量添加元素
list.addAll([1,2,3,4]]);
//查找元素1的索引
list.indexOf(1);
//遍歷list元素
for (var item in list) {
print(item);
}
//list排序
list.sort((item1,item2)=>{
return item1<item2;
});
//在指定位置為list添加元素
list.insert(1,3);
//將當(dāng)前l(fā)ist的元素點(diǎn)到 [1,2,3] -> [3,2,1]
list.reversed;
sets
存放不重復(fù)元素的集合,類(lèi)似與不重復(fù)的list
maps
存放key,value的集合{"name":"張三"}
var map = {};
//獲取map的元素個(gè)數(shù)
map.length;
//添加元素
map.putIfAbsent('name', ()=>'zhangsan'));
//獲取map中的所有key
map.keys;
//獲取map中所有的value
map.values;
//判斷map中是否包含某一個(gè)給定的value值
map.containsValue('123');
//獲取map中所有的key,value entity
map.entries;
//判斷map為空或非空
map.isEmpty;map.isNotEmpty;
//從map中移除key為name的元素
map.remove('name');
//根據(jù)指定的條件刪除元素
map.removeWhere((key,value)=>key == 'name' && value == '123');
默認(rèn)值
Dart語(yǔ)言中對(duì)于為初始化的值統(tǒng)一默認(rèn)為null,不管是字符串還是數(shù)值類(lèi)型。
其他數(shù)據(jù)類(lèi)型
Dart中還提供了 runes symbols 在此后的文章中會(huì)