Dart是Google很早就推出的一個語言。據(jù)了解說想用在網(wǎng)頁開發(fā),但沒有火起來;現(xiàn)在借著Flutter跨平臺混合開發(fā)的東風(fēng),火起來的幾率大大提升。對于開發(fā)人來說。知道Dart還是很有必要。至少也要能快速讀懂別人的代碼。
學(xué)習(xí)了解Dart,最快還是類比學(xué)習(xí)。 我之前都學(xué)習(xí)了解過C,C++, JAVA, JavaScript, Python,C#。其中對Java使用最是熟悉。就對使用Dart的一些習(xí)性和上述語言作類比.
首先 Dart 代碼 入口函數(shù)是 main函數(shù)。 雖然很多語言入口都是main函數(shù)。 但寫法和展示方式更想C語言。 就連代碼文件結(jié)構(gòu)(排版吧)就和C類似。
dart也是面向?qū)ο笤O(shè)計的語言。 面向?qū)ο笏枷牒驮砝斫夂蚃ava一致。感覺可以全部套用。只是細(xì)節(jié)有略微不同:
- 文件結(jié)構(gòu)。 Dart一個文件可以寫很多個類(class)。類和類之間是獨(dú)立的。而Java 一個文件里面的多個類,但都是基于主類的“內(nèi)部類”。
- 封裝。屬性權(quán)限關(guān)鍵字。像private, public 等規(guī)則,dart語法上直接用使用下劃線開頭(_)定義變量。使用下劃線開頭的變量就是private.
- 接口。 面向?qū)ο蟆W钪饕褪窃O(shè)計接口。Dart里面沒有interface 關(guān)鍵字來定義接口,直接使用abstract 關(guān)鍵字定義接口類。這個定義方式就像C++里面的接口定義方式。Dart也是單“繼承” 多 “實(shí)現(xiàn)”。 添加類似于JS的Function 功能。 可直接定義一個法,來實(shí)現(xiàn)方法的傳遞。簡化了java中一個接口只有一個方法的寫法。
- dart所有的對象都是Object的子類??梢灾苯邮褂胿ar關(guān)鍵字來定義變量。這個類似于JS和Python的寫法。(最新版本的Java也支持類似的寫法,但不習(xí)慣用。個人感覺這種寫法在讀代碼的時候很累)
- 導(dǎo)包。這個方式個人認(rèn)為非常類似于Python??梢栽趇mport 語句之后使用show 或 as 關(guān)鍵字直接取“別名”。
- 集合。dart語法上集合和Java集合差別不大。但感覺把Java數(shù)組的使用寫法整合到集合使用語句上了。
- 新增出發(fā)運(yùn)算。 在Java中, “/”運(yùn)算, 對整數(shù)是取整預(yù)算,對Float類型,就類似于除法預(yù)算。在dart中,新增“~/”為取整運(yùn)算。 原先的“/”為除法運(yùn)算。
- 線程。 dart中沒有線程的概念。 但要是想實(shí)現(xiàn)多線程類似的方案??梢允褂肐solate。每個Isolate使用Control 和端口來實(shí)現(xiàn)通信。另外:使用future 方式來實(shí)現(xiàn)異步。 關(guān)鍵字 async 和 await 來快速實(shí)現(xiàn)異步。實(shí)現(xiàn)原理和JS的async 和 await 一致。
- 字符串的定義。 在使用中 字符串的書寫 最容易出錯。 dart采用了類似于Python的字符串語法。使用連續(xù)三個單引號('''xxxxxx''')包括進(jìn)來的字符,全是字符串。 不需要加各種轉(zhuǎn)義字符。
- 其他一些方便的快捷寫法。 類似于java的簡寫
(1)非空判斷簡寫 “?.”
p?.y = 4;
//等價于
if(p != null) {
p.y = 4;
}
(2) ??=
b ??= value;
//等價于
if(b == null) {
b = value;
}
(3) 語句塊中 ".." (類似于 我們中文中記筆記的簡寫。)
摘自官網(wǎng)頁的例子:
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
//等價于
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
- 在構(gòu)造函數(shù)和函數(shù)(方法)的參數(shù)上。 使用“{}”包括起來的都是可選設(shè)置字段,沒有包括取來的都是必填字段。 其他和Java類似。
更多更全面的了解dart語言可以參考:
官網(wǎng)語法介紹
這些都是目前使用Flutter時對遇到dart語言的一些理解。