关于flutter:Dart中声明变量的方式和区别

在Dart中所有未初始化的变量默认值均为null。

变量:

var:
var申明的变量能够是任何数据类型,动静指定。
var变量一旦赋值,类型便会确定,则不能再扭转其类型。
var变量编译时须要确定变量类型。

dynamic:
dynamic申明的变量能够是任何数据类型,动静指定。
dynamic申明的变量能够在前期扭转赋值类型。
dynamic变量运行时须要查看变量类型

Object:
Object 是Dart所有对象的根基类,也就是说所有类型都是Object的子类(包含Function和Null),所以任何类型的数据都能够赋值给Object申明的对象。

常量:

final:
变量类型能够省略
应用final申明的变量,它只能赋值一次,赋值能够是常量也能够是变量。
final润饰的是一个最终的变量,不能再次赋值,否则会报错。也能够先申明再次赋值,然而只能赋值一次。
运行时常量;

const:
变量类型能够省略
const润饰常量,申明的时候就得赋值,只能赋值一次,赋值必须是常量。
不能批改,不能再次赋值。
编译时常量,必须定义的时候初始化;

区别:
能够把const 常量赋给 final 变量,反过来不能够。
const 变量 是隐式 final 的类型.

题外:

late:
显式申明一个非空的变量,但能够不初始化。

空平安:
定义变量时咱们能够指定变量是可空还是不可空;
Dart空平安反对基于以下三条外围准则
  默认不可空:除非您把变量显式生命为可空,否则它肯定是非空类型;
  渐进迁徙:您能够自在地抉择何时进行迁徙,多少代码会进行迁徙;
  齐全牢靠:Dart的空平安是十分牢靠的,意味着编译期间蕴含了很多优化;

! 空值断言操作符
? 示意变量是可空类型
?. 右边如果为空返回 null,否则返回左边的值,该运算符罕用于避免空异样
?? 右边如果为空返回左边的值,否则不解决,该运算符罕用于设置默认值

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理