前言程序員
本文的全部內容均是官方文檔的簡單翻譯和理解,須要查看原文,請登陸 https://www.dartlang.org/guides/language/language-tour 閱讀, 讓咱們愉快地開始編程吧。編程
再加一句:dart的關鍵字彙總及詳細介紹我就不翻譯搬運了,你們直接去上邊的網址查看官方文檔便可。ide
第一部分:基礎概念函數
如下9條是直接翻譯的,官方說但願你在學習dart時記住這些重要的概念工具
1.dart將全部的變量都視爲一個對象,全部的對象都看做一個類的實例,數字、函數、null也是對象,全部的對象都派生自Object類;
2.dart是強類型的語言,類型註解仍然是可選的,由於dart可以推斷類型。當你但願變量類型不被指定時,請使用dynamic類型;
3.dart支持通用類型,如list<int>(整數列表)或list<dynamic>(任何類型的對象列表);
4.dart支持頂級函數(如main())以及綁定到類或對象的函數(分別是靜態方法和實例方法)。還能夠在函數(嵌套函數或局部函數)中建立函數;
5.dart支持頂級變量,以及綁定到類或對象的變量(靜態變量和實例變量)。實例變量有時稱爲字段或屬性
6.dart沒有public、private、protect關鍵字,若是一個變量如下劃線(_)開頭,一般表示其是庫私有的;
7.dart的標識符以字母或下劃線開頭,後跟任意的字符、數字組合;
8.dart同時具備表達式(具備運行時值)和語句(不具備運行時值),語句一般包含一個或多個表達式,但表達式不能直接包含語句;
9.dart編譯工具一般會報告兩種問題:警告和錯誤。學習
第二部分:變量ui
(1) var類型spa
什麼叫變量咱們就不說了啊,能看到這文章的應該都瞭解這個。dart認爲變量存儲的是某個對象的reference(引用,標記),咱們舉個栗子(非完整代碼):翻譯
var name = 'Jack';
上邊那一行代碼,var是一個類型關鍵字,name是變量名字,'Jack'是變量的值。code
var類型的變量,編譯器會根據變量值的類型自動爲該變量指定類型,例如上邊的代碼,系統會斷定name變量爲字符串類型,若是你這樣寫: var name = 36; 那麼編譯器就判斷name是數字類型。
使用var類型聲明一個變量並賦值後,該變量的類型就肯定了,不能再更改了,例如這樣寫代碼(非完整代碼):
var name = 36; name = 'Jack'; print(name);
(2) dynamic類型
顧名思義,dynamic類型是容許程序員在使用過程當中動態地改變變量類型的類型,咱們看例子(非完整代碼):
dynamic name = 36; print(name); name = 'Jack Ma'; print(name);
這個例子很眼熟吧,就是上邊那個。由於name被聲明爲了dynamic類型,所以咱們能夠對它先賦值int值,再賦值String值,這都沒問題的,咱們運行一下看看結果:
Amazing! 沒有報錯,並且準確地打印出了咱們的預期值。
(3) 未初始化賦值的變量
以上兩個例子中,咱們在變量聲明的地方都給它初始化了,那麼又有同窗會問了「若是我聲明一個變量,沒有對它初始化,那麼默認值是什麼呢?」 這位同窗很愛思考啊,接下來咱們一塊兒瞭解瞭解未初始化的狀況。
dart認爲任何類型的變量,若是未初始化,其默認值都爲null。 咱們看例子(完整代碼、可直接編譯運行):
main() { int a; if(null == a) { print("a is null\n"); } else { print("Test \n"); } }
咱們的運行結果是 a is null
總結
本文主要分享了dart的一些基本概念、思想和兩種變量類型,其中:
var類型的變量,系統會根據其初始化值爲其肯定類型,且肯定以後不能再更改;
dynamic類型的變量,在使用中能夠隨時改變其類型,系統會根據該變量的當前值類型肯定其當前時刻的類型;
若聲明瞭某個類型的變量但未對其初始化,則系統認爲該變量當前值爲null。