Swift--14类型扩展

前端之家收集整理的这篇文章主要介绍了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() //扩展方法

猜你在找的Swift相关文章