【從零開始學 Dart 程式設計】變數與常數

【從零開始學 Dart 程式設計】線上教學課程目錄 ,Flutter 先修班, Dart 程式語言基礎入門課程。

變數與常數

  • 變數
    變動值,可以隨時動態存進去資料值。可以把他想像成開放式的櫃子,可以隨時存放東西

  • 常數
    固定值,不希望事後變動此資料,可以使用此種型態。可以把他想像成當資料放進去後,系統就把這個櫃子上鎖,不允許在放資料進去。

變數

程式語法

//宣告定義變數
var 變數名稱;

// 指定資料值給該變數,Dart 將會根據指定資料值自動推資料型態
變數名稱 =;

//寫成一行並指定資料值
資料型態 變數名稱 =;

變數若沒有賦予初值,預設值為 null

變數命名規則

變數命名規則,跟 Dart 保留關鍵字,不用刻意去背,因為 IDE 會提示錯誤

  1. 不能與 Dart 保留字相同,可參考下方表格。
  2. 字首,第一個字,不能是數字
  3. 字首,第一個字,可以是底線_。注意:如果為底線_開頭,標示在 lib 表示私有的變數。
  4. Dart 有區分大小寫,大小寫英文字母,視為不同變數
  5. 一個英文單字全小寫,多個單字組成首字小寫,第二個英文字以後首字大寫,如:myName, defaultValue , totalPage。(非必要,但建議的 Code Style)
  6. var 交給 Dart 自動推斷資料類型,Dart 官方建議用在區域變數。全域變數建議使用定義明確的資料類型。所以KT建議保險起見還是明確定義資料類型,IDE 智慧化提示很強,實在沒必要少打幾個字卻可能冒著可能會出錯的風險,安全第一。(非必要,但建議的 Code Style)

Dart 保留關鍵字

abstractcontinuefalsenewthis
asdefaultfinalnullthrow
assertdeferredfinallyoperatortrue
asyncdoforparttry
asyncdynamicgetrethrowtypedef
awaitelseifreturnvar
breakenumimplementssetvoid
caseexportimportstaticwhile
catchexternalinsuperwith
classextendsisswitchyield
constfactorylibrarysyncyield

實際範例

//分成兩行,範例:
var i;
i =66;

//寫成一行,範例:
var j =88;

//寫成一行,範例:
int k =168;

//新版 Dart 語法 (2.12 之後版本),可以透過 print 列印語法,將存放在 i 、 j 和K箱子裡面的資料印出來
print("i: $i");
print("j: $j");
print("k: $k");

執行結果:

i: 66
j: 88
k: 168

注意的事,要將存放在 i 、 j 和K箱子裡面的資料印出來,重要的關鍵點是要在變數前面加入錢的符號「$」,如果沒有刻意加錢的符號,只會印出固定死的文字。

print("i: i");
print("j: jjj");
print("k: kkkkkk");

執行結果:

i: i
j: jjj
k: kkkkkk

而變數可以重覆塞值進去,最後存進去的資料會覆蓋之前存放的資料

int i =168;
i = 99;
print("i: $i");

執行結果:

i: 99

常數

與變數差別,最前方加入了 final 或 const 宣告為常數,賦值一次後,不能再修改變更,否則會報錯。另外常數宣告的 code style 建議會將常數名稱使用 lowerCamelCase 小駱駝峰式命名。如:maxValue, requestActionCode。

範例

final i = 100;
const y = 66;

常數只能定義一次資料值,我們刻意去犯錯,重覆去塞資料到 i 常數值裡面去,IntelliJ IDEA 就會很聰明的智慧提示,在第二次定義的 i ,下方畫上紅色蚯蚓線,滑鼠鼠標,移動到紅色蚯蚓線下方, IntelliJ IDEA 就會跑出,錯誤原因來說明:「‘i’, a final variable, can only be set once.」,就是 final 型態不能重覆塞值。

若這時我們假裝刻意沒看到,堅持要執行(Run ‘main.dart’),執行後的結果也會在資訊視窗中顯示錯誤訊息,此訊息會指出是哪一個檔案、哪一行發生錯誤。你會發現 IntelliJ IDEA 很聰明,不用執行後才跟你說錯誤,在寫錯的當下,就會把有錯誤的檔案與行數用紅色蚯蚓線,標明錯誤。

final 與 const 差異比較

const 必須一開始編譯之前就是明確的資料值,不允許定義是編譯後運算後得到的值。final 可以定義是運算後得到的值。const 比 final 還要嚴格。

範例

int getResult() {
  return 66;
}

void main() {
  final int i = getResult(); //正確
  const int j = getResult(); //錯誤
}

那這次的課程就介紹到這邊囉~

順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。

我們下次再見囉!!!掰掰~

參考資料

A tour of the Dart language
https://dart.dev/guides/language/language-tour

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)