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

你可能感兴趣的:(ios平台)