为什么我可以做到这一点没有任何错误:
var testDto = ModelDto(modelId: 1) testDto.objectId = 2
而我定义这个:
protocol DataTransferObject { var objectType: DtoType { get } var parentObjectId: Int { get set } var objectId: Int { get } var objectName: String { get set } } struct ModelDto: DataTransferObject { var objectType: DtoType var parentObjectId: Int var objectId: Int var objectName: String init(modelId: Int) { self.objectType = DtoType.Model self.objectId = modelId self.parentObjectId = -1 self.objectName = String() } }
如果我的协议中的定义大部分被忽略(getter,setter定义),为什么还要使用它?
解决方法
根据
official documentation:
吸气剂和固化剂的要求可以通过各种方式的一致性类型来满足.如果属性声明包含get和set关键字,则一致的类型可以使用存储的变量属性或可读写的计算属性(即实现getter和setter的一个)来实现.但是,该属性声明不能实现为常量属性或只读计算属性.如果属性声明仅包含get关键字,则可以将其实现为任何类型的属性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。