Dart 编程中的不可变注解


我们知道 const 关键字可为对象提供不变性。但是,如果我们希望整个类本质上是不可变的,该怎么办?

在这种情况,我们利用 Dart 库 meta 包中存在的 immutable 注释。

语法

import 'pacakge:meta/meta.dart';

@immutable
class User {
   String name;
}

需要注意的是,一旦我们使用 immutable 符号声明任何类,其所有对象和对象属性和方法也将不可变。

示例

考虑以下示例 −

 运行演示

import 'pacakge:meta/meta.dart';

@immutable
class User {
   final String name;
   User(this.name);
   User.withPrint(this.name){
      print('New user added ${this.name}');
   }
}

void main(){
   var u = User.withPrint('Mukul');
   u = {};
   print(u.name);
}

在上面的代码中,我们声明了整个类为不可变,因此,我们通过它实例化的任何对象也将不可变。在 main 函数中,我们尝试将不同的值分配给变量 u,这将给我们一个编译错误。

输出

Error: Overriding not allowed, as 'u' is immutable.
   u = {};
   ^^^^

更新于:2021 年 5 月 21 日

545 次浏览

开启您的 事业

完成课程获得认证

马上开始
广告