属性
最后更新于
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()
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()
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 // 可以重新赋值
struct Point {
var x = 0.0, y = 0.0
}
struct Size {
var width = 0.0, height = 0.0
}
struct Rect {
var origin = Point()
var size = Size()
var center: Point {
get {
let centerX = origin.x + (size.width / 2)
let centerY = origin.y + (size.height / 2)
return Point(x: centerX, y: centerY)
}
set(newCenter) {
origin.x = newCenter.x - (size.width / 2)
origin.y = newCenter.y - (size.height / 2)
}
}
}struct Rect {
var origin = Point()
var size = Size()
var center: Point {
get {
// 单行表达式可以参略return
Point(x: origin.x + (size.width / 2), y: origin.y + (size.height / 2))
}
set{
// setter可以不用提供新值的参数名,可以使用默认名称newValue
origin.x = newValue.x - (size.width / 2)
origin.y = newValue.y - (size.height / 2)
}
}
}
struct Cuboid {
var width = 0.0, height = 0.0, depth = 0.0
// 只读计算属性可以省略get{}
var volume: Double {
return width * height * depth
}
}