Dart入门-常量与变量
in Dart with 0 comment

Dart入门-常量与变量

in Dart with 0 comment

Dart

什么是Dart

特点

Hello World

void main(){
    print('Hello Dart!');
}

解释:

变量与常量

变量

书写格式

 var name = "Bob_Var";
 print(name);
Object name3 = "Bob_Object";
print(name3);
 String name2 = "Bob_String";
 print(name2);
 dynamic name4 = "Bob_dynamic";
 print(name4);

其他

未初始化的变量默认值都是null,包括数字类型额默认值也是null,在Dart中一切皆对象。

   int lineCount;
   assert(lineCount == null);

运行这段文本会报错,错误是报错:Non-nullable variable 'lineCount' must be assigned before it can be used.提示未初始化的数值都是null。

注:assert()函数在生产环境下会被忽略;开发过程中会在非ture的调价年抛出异常。

常量

书写格式

final

  final name = "Bob";
  final String nickname = "Bobby";
  print(name);
  print(nickname);
  name = "bob2";//报错:Error: Can't assign to the final variable 'name'.
  nickname = "bob2";//报错:Error: Can't assign to the final variable 'name'.

const

  const bar = 100000;
  const double atm = 1.123 * bar;
  print(bar);
  print(atm);

  var foo = const [];
  final bar2 = const [];
  const baz = [];

两者的对比

相同点
不同点

代码示例

void main(List<String> args) {
  test1();
  test2();
}

/**
 * 常量
 * Final和Const
 */
void test2() {
  print("test2----------------");
  //Final类型的变量值只能设置一次
  final name = "Bob";
  final String nickname = "Bobby";
  print(name);
  print(nickname);
  // name = "bob2";//报错:Error: Can't assign to the final variable 'name'.

  const bar = 100000;
  const double atm = 1.123 * bar;
  print(bar);
  print(atm);

  //final在被使用到的时候才会进行初始化, 如果只是被定义, 而没有被使用到,
  //那么这个变量一直没有被初始化 (可以理解为'懒加载'); 而const修饰的变量,
  //一经定义就会在编译期间对其进行初始化

  //const还可以创建常量值、生命创建常量值的构造函数
  var foo = const [];
  final bar2 = const [];
  const baz = [];
}

/**
 * 变量
 */
void test1() {
  print("test1---------------");
  //方式1:不指定类型,使用var关键词
  var name = "Bob_Var";
  //方式2:指定类型(Object|type)
  String name2 = "Bob_String";
  Object name3 = "Bob_Object";
  //方式3:在变量类型不确定的情况下,可以使用dynamic
  dynamic name4 = "Bob_dynamic";
  print(name);
  print(name2);
  print(name3);
  print(name4);

  //未初始化的变量默认值都是null,包括数字类型额默认值也是null,在Dart中一切皆对象。
  // int lineCount;
  // assert(lineCount == null);
  //报错:Non-nullable variable 'lineCount' must be assigned before it can be used.
  //assert函数在生产环境下会被忽略;开发过程中会在非ture的调价年抛出异常
}