我应该何时在swift中为属性赋值?
之间有什么区别
class Thing {
var something:String = "Cool Thing"
}
和这个
class Thing {
var something:String
init(){
something = "Cool Thing"
}
}
实际上,当在init()上分配值时很明显,但是在使用第一段代码时是否赋值,哪种方法正确?
答案 0 :(得分:2)
它们是相同的,但Apple建议使用默认属性值模式“如果属性始终采用相同的初始值”,则出于风格原因。请参阅The Swift Programming Language: Initialization的默认属性值部分中的注释,其中包含:
默认属性值
您可以在初始化程序中设置存储属性的初始值,如上所示。或者,将默认属性值指定为属性声明的一部分。通过在定义属性时为其指定初始值来指定默认属性值。
注意:如果属性始终采用相同的初始值,请提供默认值,而不是在初始值设定项中设置值。最终结果是相同的,但默认值将属性的初始化与其声明更紧密地联系在一起。它使更短,更清晰的初始化程序,并使您能够从其默认值推断属性的类型。默认值还使您可以更轻松地利用默认初始化程序和初始化程序继承,如本章后面所述。
答案 1 :(得分:0)
您可以使用任何2.不同之处在于,如果您有多个初始化程序,则可能需要复制属性初始化。除此之外,这只是一个偏好问题。
答案 2 :(得分:0)
他们都应该做同样的事情。不首先初始化的主要区别在于,如果要将var指定为可选项并将其作为nil测试。否则分配值将是相同的。
var something:String?