import UIKit import CoreGraphics struct Circle { // 存储属性 var radius: Double // 计算属性 var diameter: Double { set(newDiameter) { radius = newDiameter / 2 } get { radius * 2 } } } var circle = Circle(radius: 5) print(circle.radius) print(circle.diameter) struct Point { var x: Int var y: Int // 初始化器设置初始值 init() { x = 10 y = 20 } } var p = Point() struct Point3D { var x: Int var y: Int var z: Int } var p3d = Point3D(x: 10, y: 20, z: 30) struct PointA { var x: Int = 10 var y: Int = 20 } var pa = PointA() class Car { init() { print("Car init!") } func run() { print("Car is running!") } } class Person { lazy var car = Car() init() { print("Person init!") } func goOut() { car.run() } } let ps = Person() print("-----------") ps.goOut() struct PointB { var x = 0 var y = 0 lazy var z = 0 } let pb = PointB() //print(pb.z) struct CircleA { var radius: Double { willSet { print("willSet", newValue) } didSet { print("didSet", oldValue, radius) } } init() { self.radius = 10 print("Circle init!") } } var circleA = CircleA() circleA.radius = 10.5 print(circleA.radius) struct Shape { var width: Int var side: Int { willSet { print("willSetSide", newValue) } didSet { print("didSetSide", oldValue, side) } } var girth: Int { set { width = newValue / side print("setGirth", newValue) } get { print("getGirth") return width * side } } func show() { print("width=\(width), side=\(side), girth=\(girth)") } } func test(_ num: inout Int) { num = 20 } var s = Shape(width: 10, side: 4) test(&s.width) s.show() print("----------") test(&s.side) s.show() print("----------") test(&s.girth) s.show() struct CarA { static var count: Int = 0 init() { CarA.count += 1 } } let c1 = CarA() let c2 = CarA() let c3 = CarA() print(CarA.count) // 单例模式 public class FileManager { // 延迟初始化 public static let shared = FileManager() // 禁止外部初始化 private init() {} // 方法 func run() { } } FileManager.shared.run()