Dart支持将常量值分配给变量。这些是通过使用以下关键字来完成的:
- const 关键字
- 最终关键字
这些关键字用于在整个代码库中保持变量的值静态,这意味着一旦定义了变量,其状态就无法更改。如果这些关键字是否具有已定义的数据类型,则没有限制。
Dart的最终关键字
final 关键字用于对变量的值进行硬编码,以后不能更改,对这些变量执行的任何类型的操作都不能更改其值(状态)。
// Without datatype
final variable_name;
// With datatype
final data_type variable_name;
示例:在Dart程序中使用 final 关键字。
Dart
void main() {
// Assigning value to geek1
// variable without datatype
final geek1 = "Geeks For Geeks";
// Printing variable geek1
print(geek1);
// Assigning value to geek2
// variable with datatype
final String geek2 = "Geeks For Geeks Again!!";
// Printing variable geek2
print(geek2);
}
Dart
void main() {
// Assigning value to geek1
// variable without datatype
const geek1 = "Geeks For Geeks";
// Printing variable geek1
print(geek1);
// Assigning value to
// geek2 variable with datatype
const String geek2 = "Geeks For Geeks Again!!";
// Printing variable geek2
print(geek2);
}
Dart
// Declaring a function
gfg() => [1, 2];
// Main function
void main() {
// Assiging value
// through function
var geek1 = gfg();
var geek2 = gfg();
// Printing result
// false
print(geek1 == geek2);
print(geek1);
print(geek2);
}
Dart
// Declaring a function
gfg() => const[1, 2];
// Main function
void main() {
// Assiging value
// through function
var geek1 = gfg();
var geek2 = gfg();
// Printing result
// true
print(geek1 == geek2);
print(geek1);
print(geek2);
}
输出:
Geeks For Geeks
Geeks For Geeks Again!!
如果我们尝试重新分配相同的变量,则会显示错误。
Dart的常量关键字
Dart的 Const 关键字的行为与 final 关键字完全相同。 final 和 const 之间的唯一区别是 const 仅在编译时使变量成为常量。在对象上使用 const ,使对象的整个深层状态在编译时严格固定,并且具有此状态的对象将被视为冻结和完全不可变的。
示例:在Dart程序中使用 const 关键字。
Dart
void main() {
// Assigning value to geek1
// variable without datatype
const geek1 = "Geeks For Geeks";
// Printing variable geek1
print(geek1);
// Assigning value to
// geek2 variable with datatype
const String geek2 = "Geeks For Geeks Again!!";
// Printing variable geek2
print(geek2);
}
输出:
Geeks For Geeks
Geeks For Geeks Again!!
示例:不使用 const 关键字赋值,然后使用 const 关键字赋值。
没有 Const 关键字
Dart
// Declaring a function
gfg() => [1, 2];
// Main function
void main() {
// Assiging value
// through function
var geek1 = gfg();
var geek2 = gfg();
// Printing result
// false
print(geek1 == geek2);
print(geek1);
print(geek2);
}
输出 :
false
[1, 2]
[1, 2]
使用 Const 关键字:
Dart
// Declaring a function
gfg() => const[1, 2];
// Main function
void main() {
// Assiging value
// through function
var geek1 = gfg();
var geek2 = gfg();
// Printing result
// true
print(geek1 == geek2);
print(geek1);
print(geek2);
}
输出 :
true
[1, 2]
[1, 2]
常量关键字属性:
- 有必要从编译期间可用的数据中创建它们。例如:设置字符串“GeeksForGeeks”很好,但设置当前时间就不行。
- 它们是深刻且可传递的不可变的。
- 它们是规范化的。