天天看點

Flutter學習二: Dart變量修飾符

目錄

    • 一, 變量聲明
      • 1. var
        • 1.1 與swift的var相同, 類型一旦确定, 不能再修改
        • 1.2 當var聲明一個變量後, Dart在編譯時會根據第一次指派資料的類型來推斷其類型,編譯結束後其類型就已經被确定
    • 2. final和const
        • 2.1. final和const修飾的變量, 隻能被指派一次
        • 2.2. 差別: const變量是一個編譯時常量,final變量在第一次使用時被初始化
    • 3. dynamic和Object
        • 3.1. 與 var功能相似,都會在指派時自動進行類型推斷
        • 3.2. final和const修飾的變量, 指派後可以改變其類型
        • 3.3. Object 是dart所有對象的根基類,任何類型的資料都可以指派給Object聲明的對象

一, 變量聲明

note: 變量的聲明必須使用 ‘const’, ‘final’, ‘var’ 或者 其他type name

a = 123 //error

1. var

1.1 與swift的var相同, 類型一旦确定, 不能再修改

1.2 當var聲明一個變量後, Dart在編譯時會根據第一次指派資料的類型來推斷其類型,編譯結束後其類型就已經被确定

var a = 1000;
   a = 'aaaaa'; /**Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
                   Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'. 
                  */
   print("${a}");
           

2. final和const

2.1. final和const修飾的變量, 隻能被指派一次

2.2. 差別: const變量是一個編譯時常量,final變量在第一次使用時被初始化

final one;
one = 123;
one = 333;
           

3. dynamic和Object

3.1. 與 var功能相似,都會在指派時自動進行類型推斷

3.2. final和const修飾的變量, 指派後可以改變其類型

3.3. Object 是dart所有對象的根基類,任何類型的資料都可以指派給Object聲明的對象

dynamic ab = 1000;
ab = 'aaaaa';
           

參考:

  1. https://www.dartlang.org/guides/language/language-tour#final-and-const
  2. https://www.dartlang.org/guides/language/effective-dart/design#do-annotate-with-object-instead-of-dynamic-to-indicate-any-object-is-allowed
  3. https://www.dartlang.org/guides/language/language-tour#important-concepts
  4. Dartpad代碼運作工具: https://dartpad.dartlang.org