Dart中的变量和常量
Dart中的变量和常量
本文将详细介绍Dart语言中变量和常量的使用方法,包括变量的创建、空安全、延迟初始化变量以及final和const常量的使用等核心概念。
变量
创建变量
var name = 'test1';
var
类型可以定义任何类型的对象,Dart会通过你后面赋值的类型给var
判断其类型。变量name
的类型被推断为String
,但你可以通过指定类型来更改它:
String name = 'test1';
空安全
Dart语言要求以健全的空安全方式编写代码。空安全能够防止意外访问null
的变量而导致的错误。这样的错误也被称为空解引用错误。访问一个求值为null
的表达式的属性或调用方法时,会发生空解引用错误。
空安全引入了三个关键更改:
- 当你为变量、参数或另一个相关组件指定类型时,可以控制该类型是否允许
null
。要让一个变量可以为空,你可以在类型声明的末尾添加?
:
String? name
你必须在使用变量之前对其进行初始化。可空变量是默认初始化为
null
的。Dart不会为非可空类型设置初始值,它强制要求你设置初始值。Dart不允许你观察未初始化的变量。这可以防止你在接收者类型可以为null
但null
不支持的相关方法或属性的情况下使用它。你不能在可空类型的表达式上访问属性或调用方法。同样的例外情况适用于
null
支持的属性或方法,例如hashCode
或toString()
。
延迟初始化变量
如果你定义了一个变量,不想立即赋值,想要后续给他赋值,可以使用late
修饰符:
- 声明一个非空变量,但不在声明时初始化。
- 延迟初始化一个变量。
Final 和常量
如果你不打算更改一个变量,可以使用final
或const
修饰它,而不是使用var
或作为类型附加。一个final
变量只能设置一次,const
变量是编译时常量。(const
常量隐式包含了final
。)
定义Final
final String name = 'test';
定义后,值无法被修改。
定义常量
请使用const
修饰编译时常量的变量。如果const
变量位于类级别,请将其标记为static const
(静态常量)。在声明变量的位置,将其值设置为编译时常量,比如数字、字符串、const
常量或在常量数字上进行的算术运算的结果:
const bar = 1000000;
const double atm = 1.01325 * bar;
const
关键字不仅仅可用于声明常量,你还可以使用它来创建常量值(values),以及声明创建(create)常量值的构造函数。任何变量都可以拥有常量值:
var foo = const [];
final bar = const [];
const baz = [];
本文原文来自CSDN