在
Swift中:
1)如果为类中的所有存储属性提供默认值,则继承默认初始值设定项,即 – init().
– 和 –
2)任何可选类型的属性默认值为nil,即 – var shouldBeNill:String? //最初应该是nill
– 因此 –
我希望这段代码能够正常工作:
class Product { let name: String? } let product = Product()
但是当我把它作为游乐场输入时,我得到错误:“类产品没有初始化器”.
为什么Product不继承默认的初始化程序init()?我知道我可以通过显式设置let name:String来完成这项工作吗? =零,但我不确定为什么我必须这样做.这是斯威夫特方面的错误,还是有些东西我不太理解?
解决方法
你走在正确的轨道上.这里的问题实际上是let vs var.
让声明属性不变.在这种情况下,Product将具有String类型的可选常量名称,没有初始值,这当然没有意义.
编译器抱怨缺少init()函数,因为在init()期间允许将属性设置为一次,作为对象构造的一部分,如果未在声明中定义,例如.
let name: String = "Im set!" // OK let name: String? = nil // OK,but very weird :) let name = "Im set!" // OK,type not needed,implicit. let name: String // OK,but needs to be set to a string during init() let name: String? // OK,but needs to be set to string or nil during init() let name // Not OK
The Swift Programming Language – 常量和变量
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。