1. 程式人生 > >Flutter系列之Dart語法基礎

Flutter系列之Dart語法基礎

今天開始分享下Flutter移動開發的相關知識,下面是部分的Dart基礎語法知識。

Dart中所有東西都是物件,包括數字、函式等, 它們都繼承自Object,並且預設值都是null(包括數字)因此數字、字串都可以呼叫各種方法。

Dart中支援以下資料型別:

  • Numbers
  • Strings
  • Booleans
  • List(也就是陣列)
  • Maps
void main()
{
  //Dart 語言本質上是動態型別語言,型別是可選的
  //可以使用 var 宣告變數,也可以使用型別來宣告變數
  //一個變數也可以被賦予不同型別的物件
  //但大多數情況,我們不會去改變一個變數的型別
  
  //字串賦值的時候,可以使用單引號,也可以使用雙引號
  var str1 = "Ok?";
  
  //如果使用的是雙引號,可以內嵌單引號
  //當然,如果使用的是單引號,可以內嵌雙引號,否則需要“\”轉義
  //String str2 = ‘It\’s ok!’;
  String str2 = "It's ok!";
  
  //使用三個單引號或者雙引號可以多行字串賦值
  var str3 = """Dart Lang
  Hello,World!""";
  
  //在Dart中,相鄰的字串在編譯的時候會自動連線
  //這裡發現一個問題,如果多個字串相鄰,中間的字串不能為空,否則報錯
  //但是如果單引號和雙引號相鄰,即使是空值也不會報錯,但相信沒有人這麼做
  //var name = 'Wang''''Jianfei'; 報錯
  var name = 'Wang'' ''Jianfei';
  
  //assert 是語言內建的斷言函式,僅在檢查模式下有效
  //如果斷言失敗則程式立刻終止
  assert(name == "Wang Jianfei");
  
  //Dart中字串不支援“+”操作符,如str1 + str2
  //如果要連結字串,除了上面訴說,相鄰字串自動連線外
  //還可以使用“$”插入變數的值
  print("Name:$name");
  
  //宣告原始字串,直接在字串前加字元“r”
  //可以避免“\”的轉義作用,在正則表示式裡特別有用
  print(r"換行符:\n");
  
  //Dart中數值是num,它有兩個子型別:int 和 double
  //int是任意長度的整數,double是雙精度浮點數
  var hex = 0xDEADBEEF;
      
  //翻了半天的文件,才找打一個重要的函式:轉換進位制,英文太不過關了
  //上面提到的字串插值,還可以插入表示式:${}
  print("整型轉換為16進位制:$hex —> 0x${hex.toRadixString(16).toUpperCase()}");

}

上面列舉一些常見的資料物件; 

在宣告變數的時候,除了var,還可以使用const和final,同時,在使用const和final的時候,可以省略var或者其他型別;

const和final定義的都是常量,值不能改變,

  • const定義的是編譯時常量,只能用編譯時常量來初始化
  • final定義的常量可以用變數來初始化
const list = const[1,2,3];//Ok
const list = [1,2,3];//Error

final list = [1,2,3];//Ok
final list = const[1,2,3];//Ok
final list = const[new DateTime.now(),2,3];//Error,const右邊必須是常量

函式定義:

如果函式只是簡單的返回一個表示式的值,可以使用箭頭語法 =>expr; 它等價於{return expr;} 所以上面的函式也可以這樣寫

sayHello(name) => 'Hello $name!';

可選引數:

Dart中支援兩種可選引數:命名可選引數和位置可選引數 但兩種可選不能同時使用

  • 命名可選引數使用大括號{},預設值用冒號:
  • 位置可選引數使用方括號[],預設值用等號=

在命名可選引數的函式中,大括號外的a為必填引數 大括號內的引數可以指定0個或多個 並且與順序無關,在呼叫函式的時候需要指明引數名 沒有賦值的引數值為null

FunX(a, {b, c:3, d:4, e})
{
  print('$a $b $c $d $e');
}

在位置可選引數的函式中,大括號內的引數可以指定0個或多個 在呼叫的時候引數值會依次按順序賦值

FunY(a, [b, c=3, d=4, e])
{
  print('$a $b $c $d $e');
}


void main()
{
  FunX(1, b:3, d:5);
  FunY(1, 3, 5);
}

本文圖片資料來源出自“Dart語言中文社群”,允許轉載,轉載時請務必以超連結形式標明文章原始出處 。