Dart 编程中的不变性
不变性是保持不变的能力。每当我们谈论不变性时,我们都会提到不变性。
在面向对象和函数式编程中,我们经常利用对象的不可变特性。不可变意味着对象的状态在创建后无法修改。
这是当今我们谈论前端开发的一个非常重要的话题,因为有多种场合和场景我们想要维护状态,而这样做的方法是利用不变性。
在 Dart 中,我们可以通过不同的方式实现不变性,有时我们也可以对我们的对象和类实施不变性。
使用' const '关键字可以很好地处理变量或对象的不变性。
应该注意的是,dart 中的 const 关键字与 javascript 中的关键字非常不同,即使它们使用相同的语法。
让我们考虑一个例子,我们在 javascript 中声明一个 const,然后尝试将它重新分配给其他东西,首先重新分配整个对象,然后重新分配它的某些属性。
示例
考虑下面显示的例子 -
// 将 USER 定义为常量并为其赋予初始值。const USER = { name: 'Mukul'; }
// 这将引发错误。
USER = {};
// 但这不会。
USER.name = 'Rahul';
console.log(USER.name);
在上面的js代码中,我们可以看到,当我们尝试用其他东西重新分配USER时,它返回了一个错误。但是,如果我们分配 USER 对象的 name 属性,则不会遇到错误。
输出结果
Rahul
这是因为在 js 中,const 关键字只是一个不可变的绑定,而不是一个不可变的对象。
在 Dart 中,场景完全不同,const 关键字确保对象本质上保持不可变。
示例
考虑下面显示的例子 -
void main(){输出结果const user = const {'name': 'Mukul'};
// Static error: "Constant variables cannot be assigned a value".
user = {};
// Runtime error: "Unsupported operation: Cannot modify unmodifiable Map".
user['name'] = 'Rahul';
}
lib/main.dart:5:3:Error: Can't assign to the const variable 'user'.
user = {};
^^^^
Error: Compilation failed.
以上是 Dart 编程中的不变性 的全部内容, 来源链接: utcz.com/z/317339.html