struct FixedLengthRangeStruct {
var firstValue: Int // 变量
let length: Int // 常量
}
// struct 会自动生成为每个存储属性初始化的构造器
let obj1 : FixedLengthRangeStruct = FixedLengthRangeStruct(firstValue:12,length:12)
class FixedLengthRangeClass {
var firstValue: Int // 变量
let length: Int // 常量
init(){
firstValue = 13
length = 13
}
}
let obj2 = FixedLengthRangeClass()
1.1 定义存储属性时提供初始值
当为常量属性提供初始值时,构造器中不可以再重新赋值。
当为变量属性提供初始值时,构造器中仍可以再重新赋值
struct FixedLengthRangeStruct {
var firstValue: Int
let length: Int = 13
var strArray : [String] = []
}
// struct 会自动生成为每个存储属性初始化的构造器
let obj1 : FixedLengthRangeStruct = FixedLengthRangeStruct(firstValue:12)
class FixedLengthRangeClass {
var firstValue: Int // 变量
let length: Int // 常量
var strArray : [String] = []
init(){
firstValue = 13
length = 13
// 定义时提供初始值的属性不需要在构造器中再提供初始值
}
}
let obj2 = FixedLengthRangeClass()
1.2 延时加载存储属性
延时加载存储属性是指当第一次被访问的时候才会计算其初始值的属性。
struct FixedLengthRangeStruct {
lazy var firstValue: Int = Int(15)
let length: Int = 13
}
// 结构体
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
let obj1 : FixedLengthRange = FixedLengthRange(firstValue:12,length:13)
obj1.firstValue = 15 // 报错
// 类
class FixedLengthRange {
var firstValue: Int
let length: Int
init(){
firstValue = 15
length = 13
}
}
let obj2 : FixedLengthRange = FixedLengthRange()
obj2.firstValue = 15 // 可以重新赋值