如何解决Dart Flutter:为类属性设置默认值时语法混乱
这是类构造函数的两个示例:
class A {
final String name;
final String sex;
A({
this.name = 'Unknown',this.sex = 'Unknown',});
}
现在考虑第二类:
class B {
final String name;
final String sex;
B({
this.name = 'Unknown',sex,}) : sex = name == 'Unknown' ? 'Unknown' : 'Other';
}
对于第二个示例是否被认为是第一个示例的语法的替代方案还是出于完全不同的目的,我感到困惑?
解决方法
第一个示例允许“ sex”为提供给构造函数的任何值。
但是,第二个示例仅接受默认值(“未知”,并将除“未知”以外的任何给定值的“性别”设置为“其他”。
因此,a = A(name:"Jon",sex:"male")
产生a.sex == "male"
,而b = B(name:"Jon",sex:"male")
产生b.sex == "Other"
。
如果使用默认设置,例如x = A(name:"Joe")
或x = B(name:"Joe")
,则生成的对象都将具有x.sex == "Unknown"
从我能收集到的信息来看,由于我没有收到满意的答复/评论,这就是我最终接受的区别。
第一个示例的语法允许在属性值为单个非条件值时为其分配默认值。
但是,如果需要基于条件分配值(例如第二个示例中的三元运算符),则无法按照第一种语法执行该操作,因为这将导致错误,因此必须根据第二种语法初始化变量。
如果我错了,请纠正我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。