微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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() //扩展方法

原文地址:https://www.jb51.cc/swift/321697.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐