Swift--14类型扩展
/* 功能: 扩展就是向一个已有的类、结构体或枚举类型添加新功能。 这包括在没有权限获取原始源代码的情况下扩展类型的能力。 类似于OC中的分类(Swift的扩展没有名字)。 语法: extension 类型 { 扩展内容 } 作用: 1、添加计算型属性和计算静态属性 2、定义实例方法和类型方法 3、提供新的构造方法 4、定义下标 5、定义和使用新的嵌套类型 6、使一个已有类型符合某个接口 */ //以下标方式访问字符串中的字符 extension String { //实现此方法可以通过下标方式访问成员 subscript (i: Int) -> Character { get { return self[characters.index(startIndex,offsetBy: i)] } set { let index = characters.index(startIndex,offsetBy: i) self.remove(at: index) self.insert(newValue,at: index) } } } var str = "abc" print(str[0]) // a str[0] = "A" print(str) //Abc //练习:给Int添加方法实现通过下标获取该整数对应的位上的值,计数从后往前 //如:print(1234[1]),结果将打印3 class Student { var name: String = "" var age: Int = 0 } extension Student { #if true //添加类方法(单例方法) struct TempType { static let stu: Student = Student() } class func defaultStudent() -> Student { return TempType.stu } #else class func defaultStudent() -> Student { struct TempType { static let stu: Student = Student() } #endif } var stu1 = Student.defaultStudent() stu1.age = 20 var stu2 = Student.defaultStudent() print(stu2.age) //20 //一个扩展可以扩展一个已有类型,使其能够适配一个或多个协议 protocol TestProtocol { func test(); } extension Student: TestProtocol { func test() { print("test method") } func extensionFunc() { print("扩展方法") } } //使用扩展的协议方法 stu2.test() //test method //使用扩展的普通方法 stu2.extensionFunc() //扩展方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |