Dart 编程 - 变量
变量是"内存中的命名空间",用于存储值。换句话说,它充当程序中值的容器。变量名称为标识符。以下是标识符的命名规则 −
标识符不能是关键字。
标识符可以包含字母和数字。
标识符不能包含空格和特殊字符,下划线 (_) 和美元 ($) 符号除外。
变量名不能以数字开头。
类型语法
变量必须在使用前声明。Dart 使用 var 关键字来实现相同的目的。声明变量的语法如下所示 −
var name = 'Smith';
dart 中的所有变量都存储对值的引用,而不是包含值。名为 name 的变量包含对值为"Smith"的 String 对象的引用。
Dart 通过在变量名前加上数据类型来支持类型检查。类型检查可确保变量仅保存特定于数据类型的数据。语法如下所示 −
String name = 'Smith'; int num = 10;
请考虑以下示例 −
void main() { String name = 1; }
上面的代码片段将导致警告,因为分配给变量的值与变量的数据类型不匹配。
输出
警告:不能将"String"类型的值分配给"int"类型的变量
所有未初始化的变量的初始值都是 null。这是因为 Dart 将所有值视为对象。以下示例说明了相同的 −
void main() { int num; print(num); }
输出
Null
dynamic 关键字
未声明静态类型的变量被隐式声明为动态变量。也可以使用 dynamic 关键字代替 var 关键字来声明变量。
以下示例说明了这一点。
void main() { dynamic x = "tom"; print(x); }
输出
tom
Final 和 Const
final 和 const 关键字用于声明常量。Dart 禁止修改使用 final 或 const 关键字声明的变量的值。这些关键字可以与变量的数据类型一起使用,也可以代替 var 关键字。
const 关键字用于表示编译时常量。使用 const 关键字声明的变量是隐式 final。
语法:final 关键字
final variable_name
或
final data_type variable_name
语法:const 关键字
const variable_name
或
const data_type variable_name
示例 – final 关键字
void main() { final val1 = 12; print(val1); }
输出
12
示例 – const 关键字
void main() { const pi = 3.14; const area = pi*12*12; print("The output is ${area}"); }
上述示例使用 const 关键字声明了两个常量,pi 和 area。area 变量的值是编译时常量。
输出
输出为 452.15999999999997
注意 − 只有 const 变量可用于计算编译时常量。编译时常量是其值将在编译时确定的常量
示例
如果尝试修改使用 final 或 const 关键字声明的变量,Dart 将引发异常。下面给出的示例说明了相同的 −
void main() { final v1 = 12; const v2 = 13; v2 = 12; }
上面给出的代码将抛出以下错误作为输出 −
Unhandled exception: cannot assign to final variable 'v2='. NoSuchMethodError: cannot assign to final variable 'v2=' #0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:178) #1 main (file: Test.dart:5:3) #2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) #3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)