前言
最近要做flutter項(xiàng)目,Dart語(yǔ)法自然是前提,于是就在Dart學(xué)習(xí)和理解的過程中做了一些適合自己的知識(shí)總結(jié),同時(shí)也希望大家能快速的學(xué)習(xí),少走彎路。另外自己理解、整理、總結(jié)或輸入過長(zhǎng)中難免有誤,不吝指教,感激不盡!
一、Dart關(guān)鍵字鎮(zhèn)樓
| abstract 1 | continue | false | new | this |
| as 1 | default | final | null | throw |
| assert | deferred1 | finally | operator1 | true |
| async 2 | do | for | part1 | try |
| async *2 | dynamic1 | get1 | rethow | typedef1 |
| await 2 | else | if | return | var |
| break | enum | implements1 | set1 | void |
| case | export1 | import1 | static1 | while |
| catch | external1 | in | super | with |
| class | extends | is | switch | yield2 |
| const | factory1 | library1 | sync*2 | yield*2 |
關(guān)鍵字右上角帶有上標(biāo) 1 的關(guān)鍵字是 內(nèi)置關(guān)鍵字。避免把內(nèi)置關(guān)鍵字當(dāng)作標(biāo)識(shí)符、類名和類型名使用。 有些內(nèi)置關(guān)鍵字是為了方便把 JavaScript 代碼移植到 Dart 而存在的。 例如,如果 JavaScript 代碼中有個(gè)變量的名字為 factory, 在移植到 Dart 中的時(shí)候,你不必重新命名這個(gè)變量。
關(guān)鍵字右上角帶有上標(biāo) 2 的關(guān)鍵字,是在 Dart 1.0 發(fā)布以后又新加的,用于支持異步相關(guān)的特性。 你不能在標(biāo)記為 async、 async*、或者 sync* 的方法體內(nèi) 使用 async、 await、或者 yield 作為標(biāo)識(shí)符。
除此之外,其他單詞也都是 保留詞,也不能用保留詞作為關(guān)鍵字。
二、語(yǔ)言特性雜談
所有能夠使用變量引用的都是對(duì)象, 每個(gè)對(duì)象都是一個(gè)類的實(shí)例。在 Dart 中甚至連 數(shù)字、方法和
null都是對(duì)象。所有的對(duì)象都繼承于 Object 類。Dart語(yǔ)言是動(dòng)態(tài)類型語(yǔ)言,可以省略變量類型,但是經(jīng)驗(yàn)告訴我們盡量給變量定義一個(gè)數(shù)據(jù)類型,會(huì)更安全。沒有顯示定義類型的變量在 debug 模式下會(huì)類型會(huì)是 dynamic(動(dòng)態(tài)的)。
和 Java 不同的是,Dart 沒有 public、 protected、 和 private 關(guān)鍵字。如果一個(gè)標(biāo)識(shí)符以下劃線
_開頭,則該標(biāo)識(shí)符 在庫(kù)內(nèi)是私有的。標(biāo)識(shí)符可以以字母或者 _ 下劃線開頭,后面可以是 其他字符和數(shù)字的組合。
沒有初始化的變量都會(huì)被賦予默認(rèn)值 null。
Dart 在 running 之前解析你的所有代碼,指定數(shù)據(jù)類型和編譯時(shí)的常量,可以提高運(yùn)行速度。
Dart語(yǔ)言的類和接口是統(tǒng)一的,類即接口,你可以繼承一個(gè)類,也可以實(shí)現(xiàn)一個(gè)類(接口),自然也包含了良好的面向?qū)ο蠛筒l(fā)編程的支持
final的值只能被設(shè)定一次。const 是一個(gè)編譯時(shí)的常量,可以通過 const 來創(chuàng)建常量值,var c=const[];,這里 c 還是一個(gè)變量,只是被賦值了一個(gè)常量值,它還是可以賦其它值。實(shí)例變量可以是 final,但不能是 const。
Dart 支持頂級(jí)方法 (例如
main()),同時(shí)還支持在類中定義函數(shù)(靜態(tài)函數(shù)和實(shí)例函數(shù))。 你還可以在方法中定義方法(嵌套方法或者局部方法)。Dart 還支持頂級(jí)變量,以及 在類中定義變量(靜態(tài)變量和實(shí)例變量)。 實(shí)例變量有時(shí)候被稱之為域(Fields)或者屬性(Properties)。
有時(shí)候 表達(dá)式(expression) 和 語(yǔ)句(statement) 是有區(qū)別的,所以這種情況我們會(huì)分別指明每種情況。
Dart 工具可以指出兩種問題:警告和錯(cuò)誤。
Dart是強(qiáng)類型語(yǔ)言(Dart2開始)。