在 Dart 中使用带有构造函数的 Setter
Posted
技术标签:
【中文标题】在 Dart 中使用带有构造函数的 Setter【英文标题】:Using Setters with Constructors in Dart 【发布时间】:2021-01-05 22:25:46 【问题描述】:如何在 Dart 的默认构造函数中使用私有实例变量的 setter?
给定示例类:
class A
String name;
int _age;
int get age => _age;
set age(age)
_age = age ?? 0;
A(this.name, this._age);
如何使用这个构造函数来执行set age()
函数?除了使用factory
之外,还有其他方法吗?我想做这样的事情
A(this.name, newAge): age = newAge;
但我得到一个错误,迫使我只能从构造函数中设置实例变量,这让我只是复制了 setter:
A(this.name, newAge): _age = newAge ?? 0;
我是否遗漏了什么,或者这对飞镖来说是不可能的?
【问题讨论】:
【参考方案1】:构造函数的初始化列表只能用于初始化成员(或调用基类构造函数)。 (另外,当初始化列表执行时,this
还无效,所以你不能访问任何成员。)
如果你想做其他类型的初始化工作,你可以在构造函数 body 中做,此时对象被认为是充分构造的,this
有效:
A(this.name, int newAge)
age = newAge;
另见:
Difference between assigning the values in parameter list and initialiser list,这解释了为什么这仅对对象初始化的后期阶段有效。 https://***.com/a/64548861/ 了解初始化成员的不同方式之间的各种差异,以及不同方式很重要的示例。【讨论】:
以上是关于在 Dart 中使用带有构造函数的 Setter的主要内容,如果未能解决你的问题,请参考以下文章