能否更新Dart Record实例中的count字段?
Dart中修改Record实例字段的方法
首先明确:Dart的Record是不可变值类型,一旦创建完成,其内部字段的值就无法被修改——不管定义Record实例的变量是final还是var,都不能直接修改Record的字段。
针对你定义的test实例(用final声明),要更新count字段的话,唯一的办法是创建一个新的Record实例,复用原实例的其他字段值,同时替换掉count的内容:
// 假设N是你要设置的新数值 final updatedTest = (service: test.service, count: N);
如果你的变量不是final(比如用var声明),可以直接把新实例重新赋值给原变量:
var test = (service: ServiceModel(), count: 1); // 更新count为N test = (service: test.service, count: N);
额外说明:如果ServiceModel是可变类(内部属性可以修改),你可以修改test.service的内部状态,但这不属于修改Record的字段——Record中存储的service引用本身依然是不可变的,只是引用指向的对象内容发生了变化。
内容的提问来源于stack exchange,提问作者WilliamKose
相关产品推荐
相关产品推荐

