📜  Dart – 常量和最终关键字

📅  最后修改于: 2021-09-02 05:12:07             🧑  作者: Mango

Dart支持将常量值分配给变量。这些是通过使用以下关键字来完成的:

  1. const 关键字
  2. 最终关键字

这些关键字用于在整个代码库中保持变量的值静态,这意味着一旦定义了变量,其状态就无法更改。如果这些关键字是否具有已定义的数据类型,则没有限制。

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]

常量关键字属性:

  1. 有必要从编译期间可用的数据中创建它们。例如:设置字符串“GeeksForGeeks”很好,但设置当前时间就不行。
  2. 它们是深刻且可传递的不可变的
  3. 它们是规范化的