Dart 語言簡易教程(一)

在 InteIIiJ IDEA 中搭建 Dart 的開發(fā)環(huán)境: http://www.reibang.com/p/fa275a08b083

Dart 語言簡易教程(一)

一個簡單的dart 程序

// Define a function.
printNumber(num aNumber) {
  print('The number is $aNumber.'); // Print to console.
}

// This is where the app starts executing.
main() {
  var number = 42; // Declare and initialize a variable.
  printNumber(number); // Call a function.
}

從這個程序里面我們可以看到如下的東西:

  • 使用//來注釋膳灶。同時/* ...*/也可以用來注釋救军。
  • num 是一個數(shù)據(jù)類型廊遍,定義在語言中梭依。同樣的類型還有String竹勉,intbool扶檐。
    就是說Dart語言是有數(shù)據(jù)類型的概念的迹缀。這點與Python語言不同。
  • print() 是顯示輸出的方法种远。
  • '...'(或者"...")涩澡,表示是有個 string 類型的數(shù)據(jù)。
    這一點與 Python 中string 類型數(shù)據(jù)一樣的使用方法坠敷。
  • var 定義了一個變量妙同,但是沒有指定特定的數(shù)據(jù)類型。
    這種用法是很靈活的膝迎,既可以像Java類似的語言采取強數(shù)據(jù)類型粥帚,也可以像Python那樣在第一次賦值的時候確認(rèn)數(shù)據(jù)類型。

按照Dart 的編程規(guī)范限次,使用2個空格來縮進(jìn)芒涡。
這一點與Python 語言建議的4個空格不一樣柴灯。

一些重要的概念

  • 所有的東西都是對象,無論是變量费尽,數(shù)字赠群,函數(shù)等。
    所以的對象都是類的實例旱幼。
    所有的對應(yīng)都繼承自內(nèi)置的Object類查描。

  • 程序中指定數(shù)據(jù)類型是為了指出自己的使用意圖,并幫助語言進(jìn)行語法檢查柏卤。但是冬三,指定類型不是必須的。
    Dart 語言是弱數(shù)據(jù)類型闷旧。

  • Dart 代碼在運行前解析长豁。
    指定數(shù)據(jù)類型和編譯時的常量,可以提高運行速度忙灼。

  • Dart 程序有統(tǒng)一的程序入口: main()吹榴。
    這一點是C / C++語言相像。

  • Dart 支持頂級的變量定義佣蓉。

  • Dart 沒有public 拉馋,protectedand private的概念里初。
    但是如果變量或函數(shù)以下劃線(_)開始啃勉,則該函數(shù)或變量屬于這個包私有(private)的方法。

  • Dart 中變量或函數(shù)以下劃線(_)或字母開始双妨,后面接上任意組合的下劃線(_)淮阐,數(shù)字或字母。
    這點與大部分的編程語言是一樣的刁品。

  • 嚴(yán)格區(qū)分expressionstatement

  • Dart 的工具可以檢查出警告信息(warning)和錯誤(errors)泣特。
    警告信息只是表明代碼可能不工作,但是不會妨礙程序運行挑随。
    錯誤可以是編譯時的錯誤状您,也可能是運行時的錯誤。編譯的錯誤將阻止程序運行兜挨,運行時的錯誤將會以exception的方式呈現(xiàn)膏孟。

  • Dart 使用 ; 來分割語句
    這點類似Java / C++, 但是與Python語言不同。

關(guān)鍵字

Dart 語言提供的關(guān)鍵字如下表所示:

1 2 3 4 5
abstract continue false new this
as default final null throw
assert deferred finally operator true
async do for part try
async dynamic get rethrow typedef
await else if return var
break enum implements set void
case export import static while
catch external in super with
class extends is switch yield
const factory library sync yield

變量(Variable

變量賦值的例子

// The variable called name contains a reference to a String object with a value of “Bob”.
var name = 'Bob';

默認(rèn)值

沒有初始化的變量都會被賦予默認(rèn)值 null.
即使是數(shù)字也是如此拌汇, 因為在Dart 中數(shù)字也是一個對象柒桑。

int lineCount;
assert(lineCount == null);
// Variables (even if they will be numbers) are initially null.
```language

Note: The assert() call is ignored in production mode. In checked mode, assert(condition) throws an exception unless condition is true.

可選類型

也可以在定義的時候指定變量的類型。

String name = 'Bob';

指定數(shù)據(jù)類型可以更好的辨明自己的使用意圖噪舀,編譯器和IDE 工具可以根據(jù)這些類型信息來做檢查幕垦,更早的發(fā)現(xiàn)問題丢氢。
如前文所說,通過指定類型先改,也可以減少編譯和運行時間疚察。

常量和固定值

  1. 如果定義的變量不會變化,可以使用finalconst來指明仇奶。
    也可以使用finalconst來代替類型聲明貌嫡。

    • final的值只能被設(shè)定一次。
    • const 是一個編譯時的常量该溯。( Const variables are implicitly final.)
    final name = 'Bob'; // Or: final String name = 'Bob';
    // name = 'Alice';  // Uncommenting this causes an error
    
  2. 通過對const類型做四則運算將自動得到一個const類型的值岛抄。

const bar = 1000000;       // Unit of pressure (dynes/cm2)
const atm = 1.01325 * bar; // Standard atmosphere
```language
  1. 可以通過const來創(chuàng)建常量的值
    就是說const[] 本身是構(gòu)造函數(shù)。
// Note: [] creates an empty list.
// const [] creates an empty, immutable list (EIA).
var foo = const [];   // foo is currently an EIA.
final bar = const []; // bar will always be an EIA.
const baz = const []; // baz is a compile-time constant EIA.
// You can change the value of a non-final, non-const variable,
// even if it used to have a const value.
foo = [];
// You can't change the value of a final or const variable.
// bar = []; // Unhandled exception.
// baz = []; // Unhandled exception.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狈茉,一起剝皮案震驚了整個濱河市夫椭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氯庆,老刑警劉巖蹭秋,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異堤撵,居然都是意外死亡仁讨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門实昨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洞豁,“玉大人,你說我怎么就攤上這事荒给≌尚” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵志电,是天一觀的道長曙咽。 經(jīng)常有香客問我,道長溪北,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任夺脾,我火速辦了婚禮之拨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咧叭。我一直安慰自己蚀乔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布菲茬。 她就那樣靜靜地躺著吉挣,像睡著了一般派撕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上睬魂,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天终吼,我揣著相機與錄音,去河邊找鬼氯哮。 笑死际跪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喉钢。 我是一名探鬼主播姆打,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肠虽!你這毒婦竟也來了幔戏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤税课,失蹤者是張志新(化名)和其女友劉穎闲延,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伯复,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡慨代,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了啸如。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侍匙。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖叮雳,靈堂內(nèi)的尸體忽然破棺而出想暗,到底是詐尸還是另有隱情,我是刑警寧澤帘不,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布说莫,位于F島的核電站,受9級特大地震影響寞焙,放射性物質(zhì)發(fā)生泄漏储狭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一捣郊、第九天 我趴在偏房一處隱蔽的房頂上張望辽狈。 院中可真熱鬧,春花似錦呛牲、人聲如沸刮萌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽着茸。三九已至壮锻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涮阔,已是汗流浹背猜绣。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澎语,地道東北人途事。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像擅羞,于是被迫代替她去往敵國和親尸变。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理减俏,服務(wù)發(fā)現(xiàn)召烂,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 注:這是第三遍讀《C語言深度解剖》娃承,想想好像自從大學(xué)開始就沒讀完過幾本書奏夫,其中譚浩強的那本《C語言程序設(shè)計(第四版...
    HavenXie閱讀 1,723評論 1 6
  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多。不是我不學(xué)習(xí)历筝,這世界變化快酗昼! 有時候還是蠻懷念十幾、二...
    碼園老農(nóng)閱讀 5,321評論 2 35
  • Dart 語言簡易教程(一): http://www.reibang.com/p/8a62b1a2fd75Dart...
    you的日常閱讀 15,119評論 4 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,516評論 1 51