iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

從零開始的Flutter世界系列 第 3

Day03 Dart 語言介紹(一) 基本資料類型、變數、常數

  • 分享至 

  • xImage
  •  

接下來會開始介紹Dart 語言,一下就是將近連續十天,為的是把基礎打好,如果有想更多的補充資料,這是Dart 官網教學,想要看更詳細的內容可以去參考,下方內容都可以使用Dart 線上編譯器:DartPad,把下方程式碼複製貼上在DartPad,按Run執行就可以看到輸出的結果囉,接下來就一起來看看Dart 語言吧。

基本語法

  • main()

    每個App 都必須具有的方法,也是Dart 程式的入口方法,有它才可以執行 (像DartPad),詳細關於 方法 Function,的內容會在後面再介紹

  • print()

    列印內容至螢幕的便捷方法

  • 註解:

    可在程式碼內,解釋代碼功能的作用,可以增強程式的可讀性,可維護性

    1. 單行註解:// 欲註解的筆記內容

      範例:

      // This is where the app starts executing.
      main() {
        //在螢幕上印出 123
        print(123)
      }
      
    2. 多行註解:/* 欲註解的筆記內容 */

      main() {
        /*在螢幕上印出 123
        print(123)
        */
      }
      

基本的資料型態 (Data type)

這邊先簡單介紹一些基本型態,幾乎所有程式語言都有這些型態

整數 (int)
  • 所有數字不管正負,只要不包括小數點,型態即為int
浮點數 (double)
  • 只要包括小數點的數字,不管正負,型態即為double
布林值 (bool)
  • 只有兩種值,不是true就是false,可當邏輯運算符號,之後會與判斷式做運用
字串 (String)
  • 用兩個單引號 ' ' 或兩個雙引號 " ",所包圍的內容,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("\""); //印出 "
    }
    

變數 Variables

前言
  • 沒有初始化的變數都會有預設值 null,即空值的意思
  • 在Dart中,一切都是物件,所有的物件都是繼承自Object類別,也就是說所有的變數不管是數值、方法甚至是 null 都是物件
  • 命名規則:
    1. Code Style 推薦使用**lowerCamelCase**,可參考官網lowerCamelCase
    2. 第一個字不能為數字 ( 例如:int 1x = 0; )
    3. 大小寫視為不同
    4. 不能包含特殊符號,除了 _ 和 $
    5. 不能命名為Dart 的保留字,可參考官網Keywords
宣告變數
  • 資料型態 變數名稱;

    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等功能。

常數

前面加上finalconst來宣告一個資料,賦值後就不能再做改變

  • final:必須在定義時將其初始化,其值在初始化後不可改變

    void main(){
      final name = 'Bob';
      name = 'Alice'; //final 只能被指派值一次,Error: Can't assign to the final variable 'name'
    }
    
  • constconstfinal更加嚴格,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 語言觀念,先不用太多,以上範例都可以複製代碼至線上編譯器看運行的結果


上一篇
Day02 建構Flutter的開發環境
下一篇
Day04 Dart 語言介紹(二) 資料型態、條件式、迴圈
系列文
從零開始的Flutter世界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言