Dart 中的 final 关键字用于创建本质上不可变的常量或对象。final 和 const 关键字之间的唯一区别是 final 是一个运行时常量,这反过来意味着它的值可以在运行时分配,而不是我们在编译时为const 关键字分配的值。
考虑下面显示的例子 -
void main(){ final int xy = 10; print(xy); }输出结果
10
在上面的例子中,我们用 final 关键字声明了一个 int 变量,这意味着分配给它的值不会改变。
考虑下面显示的例子 -
void main(){ final int xy = 10; print(xy); xy = 99; print(xy); }输出结果
Error: Can't assign to the final variable 'xy'. xy = 99; ^^ Error: Compilation failed.
与 Dart 中的任何普通变量一样,使用 final 关键字声明的变量也可以在 dartAnalyzer的帮助下推断它要存储的数据类型。
考虑下面显示的例子 -
void main(){ final name = "nhooo"; print(name); }输出结果
nhooo
现在让我们看看在运行时评估值的情况。
考虑下面显示的例子 -
void main(){ final squareOfTwo = getSquareOfNumber(2); print("SqaureOfTwo = $squareOfTwo"); } num getSquareOfNumber(num i){ return i * i; }
在上面的例子中,我们有一个 main 函数,其中的最终常量从一个将在运行时而不是编译时评估的函数中获取它的值。
输出结果
SqaureOfTwo = 4