[dart學習]第二篇:dart變量介紹 (一)

前言程序員

本文的全部內容均是官方文檔的簡單翻譯和理解,須要查看原文,請登陸  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);
則會報錯:
Error: A value of type 'String' can't be assigned to a variable of type 'int'.
    Try changing the type of the left hand side, or casting the right hand side to 'int'.
     name = 'Jack';
上邊錯誤的緣由是適用var聲明變量name,並初始化爲36,則編譯器就會堅決地認爲name是個int類型變量,當再次嘗試爲name變量賦值爲String類型時,編譯器就不一樣意了。
那麼這個時候有同窗會問了「若是我想在使用的過程當中,爲某個變量隨意賦任何類型的值可怎麼辦呢?」,沒關係,dart可以知足你,請看下文。

(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。

相關文章
相關標籤/搜索