为什么我按视频中的方法,自定义多个构造方法,却出错呢?Dart版本问题?
通过试验,发现只要对象中定义了final属性,在定义多个命名对象的时候,每次都必须要对final属性进行定义,否则会出错。
以下是我改进过的,完全正确。
可是我百思不得其解的是,老师在视频中的,为啥能够正常运行呢?
可是我百思不得其解的是,老师在视频中的,为啥能够正常运行呢?
通过试验,发现只要对象中定义了final属性,在定义多个命名对象的时候,每次都必须要对final属性进行定义,否则会出错。
以下是我改进过的,完全正确。
可是我百思不得其解的是,老师在视频中的,为啥能够正常运行呢?
可是我百思不得其解的是,老师在视频中的,为啥能够正常运行呢?
2019-05-28
很高兴回答您的问题 经过github查找 确实是版本问题 在2.3版本中 添加了对 含有 final关键字 属性的初始化校验 意思就是 如果类中的属性 被标记为 final 那这个属性必须初始化值 不然无法编译通过 我是基于这个地址 https://github.com/dart-lang/sdk/commit/f8a96b88e9d52ac5cbbdc639d326e7a4baba3842 和以往编程语言对final 的定义 推断出来的 这也就解释了你之前的实验 关键一点就是 含有final 属性的字段 必须在 构造之前初始化 目前我已知的有两种方式 一 是 属性声明时初始化 如 final String workType = "XXX" ; 这样 你在定义其他构造函数时 就无需添加 this.workType 了 另一种就是哥们你最后写的那样 使用语法糖 在构造函数中 写his.workType 这俩都是在调用构造函数之前 对 workType进行初始化 不知是否解决您的疑问哈
举报