Dart - 变量、操作符

变量

var

声明变量,可以赋值不同类型的值,会自动推断变量的类型

late

  1. 声明一个不可为 null 的变量,该变量在声明后进行初始化
late String description;

void main() {
  description = 'Feijoada!';
  print(description);
}
  1. 延迟初始化变量

在下面的示例中,如果temperature从未使用该变量,则readThermometer()永远不会被调用:

late String temperature = readThermometer();

const

修饰的变量只可以被赋值一次。const修饰的变量在整个App的生命周期内都是不可变的常量,在内存中也只会创建一次,之后的每次调用都会复用第一次创建的对象

final

用来修饰变量,只能被赋值一次,运行时赋值。也就是当程序运行到这里才会被赋值。

const 和 final 的区别

final 运行时赋值,const 编译时赋值

final内容相同指向不同变量,const内容相同指向相同对象

final定义的list可以修改,const则不能修改

const可以创建常量值以及修饰常量构造函数

final不能修饰类和方法

操作符?

初始值可以为null

int age = null;  // false
int? age = null; // true

asisis!

as 是类型转换

void main() {
  Object a = 1;
  int b = a as int;
  print(b);
}

isis!是类型判断,is判断是对应元素,is!判断是不对应元素

void main() {
  Object a = 1;
  print(a is int); // 输出 true
  print(a is! int); // 输出 false
}

??=

仅在变量为null时才会赋值

void main() {
  var a;
  a ??= 1;
  a ??= 2;
  print(a); // 输出 1
}

condition ? expr1 : expr2

如果条件true,则计算expr1的值;否则,计算并返回expr2的值。

void main() {
  int a = 1;
  var b = a > 2 ? 2 : 1;
  print(b); // 输出 2
}

expr1 ?? expr2

expr1 非空,返回其值;否则,计算并返回expr2的值

void main() {
  var a;
  var b = a ?? '123';
  var c = b ?? '456';
  print(b); // 输出 123
  print(c); // 输出 123
}

… 和 ?..

..可以访问实例成员和实例方法

?..如果对象为空,保证不会对该空对象尝试任何级联操作

class Paint {
  late String key;
  void set(key) {
    this.key = key;
  }

  void get() {
    print('get ${this.key}');
  }
}

void main() {
  new Paint()
    ..set('a')
    ..get(); // 输出 get a
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值