/*
功能:
扩展就是向一个已有的类、结构体或枚举类型添加新功能。
这包括在没有权限获取原始源代码的情况下扩展类型的能力。
类似于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() //扩展方法
总结以上是内存溢出为你收集整理的Swift--14类型扩展全部内容,希望文章能够帮你解决Swift--14类型扩展所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)