Swift的类,及存储属性,计算发发样码

简介: 进入机械的学习模式, 就是把代友敲完。 以期能加深些记忆。


进入机械的学习模式,

就是把代友敲完。

以期能加深些记忆。



struct Resolution {
	var width = 0
	var height = 0
}

class VideoMode {
	var resolution = Resolution()
	var interlaced = false
	var frameRate = 0.0
	var name: String?
}

let someResolution = Resolution(width: 640, height: 480)
let someVideoMode = VideoMode()

print("The width of someResolution is \(someResolution.width)")

someVideoMode.resolution.width = 1280
print("The width of someVedioMode is \(someVideoMode.resolution.width)")

let hd = Resolution(width: 1920, height: 1080)
var cinema = hd
cinema.width = 2048

print("cienma is now \(cinema.width) pixels wide")
print("hd is still \(hd.width) pixels width")

enum CompassPoint {
	case North, South, East, West
}

var currentDirection = CompassPoint.West
let rememberedDirection = currentDirection
currentDirection = .East
if rememberedDirection == .West {
	print("The remembered direction is still .West")
}

let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0

let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0

print("The frameRate property of tenEighty is now \(tenEighty.frameRate)")

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)
		}
	}
}

var square = Rect(origin: Point(x: 0.0, y: 0.0),
	size: Size(width: 10.0, height: 10.0))
	
let initialSquareCenter = square.center
square.center = Point(x: 15.0, y: 15.0)
print("square.origin is now at (\(square.origin.x), \(square.origin.y))")

class StepCounter {
	var totalSteps: Int = 0 {
		willSet(newTotalSteps) {
			print("About to set totalSteps to \(newTotalSteps)")
		}
		didSet {
			if totalSteps > oldValue {
				print("Added \(totalSteps - oldValue) steps")
			}
		}
	}
}

let stepCounter = StepCounter()
stepCounter.totalSteps = 200
stepCounter.totalSteps = 360
stepCounter.totalSteps = 896

struct SomeStructure {
	static var storedTypeProperty = "Some value"
	static var computedTypeProperty: Int {
		return 1
	}
}

enum SomeEnumeration {
	static var storedTypeProperty = "Some value"
	static var computedTypeProperty: Int {
		return 6
	}
}

class SomeClass {
	static var storedTypeProperty = "Some value"
	static var computedTypeProperty: Int {
		return 27
	}
	class var overrideableComputedTypeProperty: Int {
		return 107
	}
}

print(SomeStructure.storedTypeProperty)
SomeStructure.storedTypeProperty = "Another value"
print(SomeStructure.storedTypeProperty)
print(SomeEnumeration.computedTypeProperty)
print(SomeClass.computedTypeProperty)


目录
相关文章
|
2月前
|
存储 Swift 开发者
Swift 是一种现代编程语言,支持面向对象编程(OOP),包括类、对象、继承、多态等核心概念
Swift 是一种现代编程语言,支持面向对象编程(OOP),包括类、对象、继承、多态等核心概念。通过这些特性,Swift 能够帮助开发者构建结构清晰、可维护性强的代码。本文介绍了 Swift 中 OOP 的基本概念、高级特性和实际应用,并通过一个简单的 `Car` 类示例展示了如何在 Swift 中实现面向对象编程。
30 1
|
2月前
|
Swift 索引 容器
Swift 泛型-关联类
Swift 泛型-关联类
26 1
|
2月前
|
存储 监控 Swift
Swift 属性
10月更文挑战第29天
31 2
|
3月前
|
Swift
Swift 中 struct(结构体)和 class(类)的区别
【10月更文挑战第10天】理解 struct 和 class 的区别对于正确使用 Swift 语言进行编程非常重要。在实际开发中,需要根据具体的需求和场景来选择合适的数据类型,以充分发挥它们的优势,提高代码的质量和效率。
|
2月前
|
存储 Swift iOS开发
Swift 类
10月更文挑战第29天
14 0
|
7月前
|
存储 Swift
Swift开发——属性检查器
Swift中的属性检查器(willSet, didSet)允许在设置存储属性值前后执行代码。在类`Circle`中,属性`radius`使用属性观察器:willSet在赋值前检查值,若值为负则打印警告;didSet在赋值后比较新旧值,根据变化输出相应信息。在实例`c`中,`radius`从-5变为0时,输出“Input value is negative.”和“The circle gets smaller.”;从0变为10时,输出“Input value is normal.”和“The circle gets larger.”。
224 4
Swift开发——属性检查器
|
7月前
|
存储 程序员 Swift
Swift开发——存储属性与计算属性
Swift推荐使用结构体进行开发,结构体支持属性和方法,且作为值类型。结构体属性包括存储属性(如radius)和计算属性(如r),计算属性不存储值,类似方法。结构体用`struct`定义,命名遵循大驼峰规则。实例名遵循小驼峰规则。属性可在结构体中任意位置定义,静态属性用`static`。存储属性可为`lazy`实现懒加载。结构体实例通过`.`访问属性和方法,静态属性和方法用`结构体名.`访问。计算属性可读写,可通过`get`和`set`定义。程序段1展示了结构体Point和Circle的属性和方法,包括私有属性、只读计算属性、可读写计算属性及`mutating`方法。
48 0
Swift开发——存储属性与计算属性
|
8月前
|
安全 Swift iOS开发
【Swift开发专栏】Swift中的属性观察者与KVO
【4月更文挑战第30天】Swift编程语言支持属性观察者(`willSet`和`didSet`)和键值观察(KVO)来响应属性变化。属性观察者在设置前(`willSet`)和设置后(`didSet`)执行代码,可用于数据绑定。KVO是Cocoa/Cocoa Touch中的机制,需`NSObject`子类和`@objc dynamic`属性配合使用。注意在观察者销毁前移除观察,以避免内存问题。示例展示了属性观察者实现简单数据绑定。
106 1
|
8月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
49 0
|
8月前
|
安全 Swift 开发者
【Swift开发专栏】Swift类的继承与多态
【4月更文挑战第30天】Swift中的OOP聚焦于类继承与多态,提供代码复用和类型安全。继承通过`class`和冒号实现,子类继承父类属性和方法,支持单继承以降低复杂性。多态借助协议和类型兼容实现,允许统一处理不同类型的对象。继承用于构建复杂类,多态则使代码更通用、可扩展。理解并运用这些概念对Swift开发者至关重要。
65 0