import UIKit
//扩展就是向一个已有的类、结构体或枚举类型添加新功能。
//扩展可以对一个类型添加新的功能,但是不能重写已有的功能。
//Swift 中的扩展可以:
//添加计算属性 - computed properties
//添加方法 - methods
//添加新的初始化方法 - initializers
//添加附属脚本 - subscripts
//添加并使用嵌套类型 - nested types
//遵循并实现某一协议 - conform protocol
//1、定义一个简单类
class SomeType {
// 加到SomeType的新功能写到这里
func adds(a:Int,b:Int) -> Int {
return a + b
}
}
let some = SomeType()
let sum = some.adds(a: 2, b: 3)
print(sum)
//扩展声明使用关键字 extension:
extension SomeType{
static var num = 4//静态属性,防止方法被重写,因为extension的类属性不能重写
func chen(a:Int,b:Int) -> Int{
return a * b
}
// func adds(a:Int,b:Int) -> Int {
// return a - b
// }//不能对已有的方法进行修改
}
let chen = some.chen(a: 2, b: 3)
let newName = SomeType.num
print(newName)
//2、对已有类进行扩展
extension UIColor{
static var favoriteColor:UIColor{
return UIColor(displayP3Red: 0.5, green: 0.9, blue: 0.8, alpha: 1)
}
}
let color = UIColor.favoriteColor
print(color)
extension UIViewController{
func setBackGroundColors() {
self.view.backgroundColor = UIColor.white
}
}
protocol SomeProtocol{
var marks: Int { get set }
var result: Bool { get }
func attendance() -> String
func markssecured() -> String
}
protocol AnotherProctocol{
}
extension SomeType: SomeProtocol, AnotherProctocol {
// 协议实现写到这里
var marks: Int {
get {
return 10
}
set {
newValue
}
}
var result: Bool {
return true
}
func attendance() -> String {
return "a"
}
func markssecured() -> String {
return "b"
}
func getNews() -> String {
return self.markssecured()
}
}
//练习page714
//1、4现有实例类型方法的新实现。
//2、代码片段做了什么? 2 添加一个方法,该方法返回数组的打乱副本。
//3、1