【從零開始學 Dart 程式設計】變數與常數
【從零開始學 Dart 程式設計】線上教學課程目錄 ,Flutter 先修班, Dart 程式語言基礎入門課程。
變數與常數
- 變數
變動值,可以隨時動態存進去資料值。可以把他想像成開放式的櫃子,可以隨時存放東西
- 常數
固定值,不希望事後變動此資料,可以使用此種型態。可以把他想像成當資料放進去後,系統就把這個櫃子上鎖,不允許在放資料進去。
變數
程式語法
//宣告定義變數
var 變數名稱;
// 指定資料值給該變數,Dart 將會根據指定資料值自動推資料型態
變數名稱 = 值;
//寫成一行並指定資料值
資料型態 變數名稱 = 值;
變數若沒有賦予初值,預設值為 null
變數命名規則
變數命名規則,跟 Dart 保留關鍵字,不用刻意去背,因為 IDE 會提示錯誤
- 不能與 Dart 保留字相同,可參考下方表格。
- 字首,第一個字,不能是數字
- 字首,第一個字,可以是底線_。注意:如果為底線_開頭,標示在 lib 表示私有的變數。
- Dart 有區分大小寫,大小寫英文字母,視為不同變數
- 一個英文單字全小寫,多個單字組成首字小寫,第二個英文字以後首字大寫,如:myName, defaultValue , totalPage。(非必要,但建議的 Code Style)
- var 交給 Dart 自動推斷資料類型,Dart 官方建議用在區域變數。全域變數建議使用定義明確的資料類型。所以KT建議保險起見還是明確定義資料類型,IDE 智慧化提示很強,實在沒必要少打幾個字卻可能冒著可能會出錯的風險,安全第一。(非必要,但建議的 Code Style)
Dart 保留關鍵字
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 |
實際範例
//分成兩行,範例:
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