📜  Flutter 中什么是 final 和 const verabile (1)

📅  最后修改于: 2023-12-03 15:30:49.403000             🧑  作者: Mango

Flutter 中的 final 和 const 变量

在 Flutter 中,常见的变量类型有 final 和 const。它们的作用是声明不可变的常量,即一旦赋值便不能再更改的值。

final 变量

final 变量在运行时才会被赋值,并且只能被赋值一次。一般用于运行时初始化的情况,例如:

final String name = "John";
final int age = 30;

在以上例子中,name 和 age 都是 final 变量,它们在运行时才确定具体的值。一旦被赋值,就不能再更改。

注意: final 变量可以延迟初始化,也就是说,你可以在声明时不指定初始值,在需要使用时再进行初始化。

final String name;
name = "John";
const 变量

与 final 变量不同,const 变量是在编译时就确定了值,并且只能被赋值一次。一般用于在编译时就可以确定值的情况,例如:

const double PI = 3.1415926535897932;
const int MAX_VALUE = 100;

在以上例子中,PI 和 MAX_VALUE 都是 const 变量,它们的值在编译时就已经确定了,无法更改。

注意: const 变量必须在声明时就指定初始值,因为它们的值在编译时就确定了。

final 和 const 的区别

虽然 final 和 const 都表示常量,但它们之间还是有一些区别的。

  1. final 变量是在运行时确定值的,可以通过函数、变量等方式进行赋值。而 const 变量是在编译时就确定值的,只能通过常量表达式进行赋值。

  2. final 变量可以不被初始化,在需要使用时再进行初始化。而 const 变量必须在声明时就指定初始值。

  3. final 变量可以被非 final 变量初始化,而 const 变量只能被 const 变量初始化。

final int a = 10;
final int b = a; // b 的值为 10

const int c = 20;
const int d = c; // d 的值为 20

int e = 30;
final int f = e; // f 的值为 30,e 不是 final 变量

// 编译时会报错
const int g = 40;
final int h = g; // const 变量只能被 const 变量初始化
总结

final 和 const 变量都是不可变的常量,它们的区别在于值的确定时间和初始化方式上。在 Flutter 中,选择使用哪种常量取决于你的具体情况,但无论使用哪种,都可以提高代码的安全性和可读性。