接下來會開始介紹Dart 語言,一下就是將近連續十天,為的是把基礎打好,如果有想更多的補充資料,這是Dart 官網教學,想要看更詳細的內容可以去參考,下方內容都可以使用Dart 線上編譯器:DartPad,把下方程式碼複製貼上在DartPad,按Run執行就可以看到輸出的結果囉,接下來就一起來看看Dart 語言吧。
main()
:
每個App 都必須具有的方法,也是Dart 程式的入口方法,有它才可以執行 (像DartPad),詳細關於 方法 Function,的內容會在後面再介紹
print()
:
列印內容至螢幕的便捷方法
註解:
可在程式碼內,解釋代碼功能的作用,可以增強程式的可讀性,可維護性
單行註解:// 欲註解的筆記內容
範例:
// This is where the app starts executing.
main() {
//在螢幕上印出 123
print(123)
}
多行註解:/* 欲註解的筆記內容 */
main() {
/*在螢幕上印出 123
print(123)
*/
}
這邊先簡單介紹一些基本型態,幾乎所有程式語言都有這些型態
int
double
true
就是false
,可當邏輯運算符號,之後會與判斷式做運用用兩個單引號 ' ' 或兩個雙引號 " ",所包圍的內容,Dart 會把它視為一筆型態為字串 (String) 的資料
Escape Character
:欲印出跳脫字元須在前面加\
才可成功,像想要在雙引號中印出"
,就必須前面加反斜線 \"
字串插補 (String interpolation): $variableName
or ${expression}
實用功能,在字串中更容易引用變數或者表示式
main(){
int a = 2;
int b = 3;
print("$a * $b = ${a*b}"); //印出 2 * 3 = 6
print("\""); //印出 "
}
Object
類別,也就是說所有的變數不管是數值、方法甚至是 null 都是物件lowerCamelCase
**,可參考官網lowerCamelCase
int 1x = 0;
)資料型態 變數名稱;
void main() {
//宣告一個名為pi,型態為double 的變數,未給予初始值,預設為null
double pi;
print(pi); //印出 null
//指定值為3.14159265359 的double 給變數pi (有小數點的數字,型態為double)
pi = 3.14159265359;
print(pi); //印出 3.14159265359
//當變數已宣告明確的資料型態後,就不能指派其他型態的值給它
pi = "3.14159265359"; //Error: A value of type 'String' can't be assigned to a variable of type 'double'.
}
補充:
從Dart 2.1 開始,必要時,int 會自動轉成double
void main() { double z = 1; //相當於double z = 1.0. }
資料型態 變數名稱 = 符合資料型態的初始值;
void main() {
//宣告一個名為pi,型態為double 的變數,並給予初始值3.14159265359
double pi = 3.14159265359;
print(pi); //印出 3.14159265359
}
Dart雖然是強型別語言 (strongly typed),但可以用var
或者dynamic
來宣告變數,Dart會自動推斷其資料型別
var
:推斷資料型態後,就不能再給它其他型態的值
void main() {
var pi = 3.14159265359; //3.14159265359,有小數點的數值,推斷變數pi 型態為 double
print(pi); //印出 3.14159265359
//變數pi 已經是double 型態,若給予它不同型態的值,會報錯
pi = "3.14159265359";//Error: A value of type 'String' can't be assigned to a variable of type 'double'.
}
dynamic
:所有物件的基礎型態,也就是說任何物件都可以是dynamic
型態
void main() {
dynamic pi = 3.14159265359; //變數pi 型態為 dynamic,初始值為3.14159265359
print(pi); //印出 3.14159265359
pi = "3.14159265359"; //不會出錯,型態為 dynamic,可以給予任何型態的值
}
補充:
void main(){ var pi; //未給予初始值,預設為null,無法推斷出明確的資料型態,故推斷型態為dynamic pi = 3.14159265359; //不會出錯 pi = "3.14159265359"; //不會出錯 }
經由 var
宣告變數,來讓Dart 自動推斷資料類型雖然方便,但是如果變數用明確的資料型態宣告,可以更加清晰表達程式碼,也可為IDE 編譯器等工具帶來更好的幫助,提供我們程式碼的提示,提前發現bug等功能。
前面加上final
或const
來宣告一個資料,賦值後就不能再做改變
final
:必須在定義時將其初始化,其值在初始化後不可改變
void main(){
final name = 'Bob';
name = 'Alice'; //final 只能被指派值一次,Error: Can't assign to the final variable 'name'
}
const
:const
比final
更加嚴格,final
只是要求資料在初始化後值不能變,所以final
可以被指派為編譯後變數運算後得到的值,但const
必須在編譯之前就是明確的資料值
void main(){
const pi = 3.14159265359;
int r = 1;
final a = r*r*pi;
const b = r*r*pi; //不允許是編譯後才得到的值,Error: Not a constant expression.
}
Dart 語言的第一天,介紹了資料的基本型態與如何宣告變數還有基本Dart 語言觀念,先不用太多,以上範例都可以複製代碼至線上編譯器看運行的結果