加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift--14类型扩展

发布时间:2020-12-14 06:17:12 所属栏目:百科 来源:网络整理
导读:/* 功能: 扩展就是向一个已有的类、结构体或枚举类型添加新功能。 这包括在没有权限获取原始源代码的情况下扩展类型的能力。 类似于 OC 中的分类 (Swift 的扩展没有名字 ) 。 语法: extension 类型 { 扩展内容 } 作用: 1 、添加计算型属性和计算静态属性

/*

功能:

扩展就是向一个已有的类、结构体或枚举类型添加新功能。

这包括在没有权限获取原始源代码的情况下扩展类型的能力。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读