Swift专题讲解二十——扩展

Swift专题讲解二十——扩展

一、简介

        Swift中的扩展与Objective-C中的类别功能相似,扩展可以为一个已有的类、结构体、枚举或者协议添加新的属性或方法,与Objective-C的类别不同的是,Swift中的扩展没有名称。

        Swift中的扩展支持如下功能:

1.添加计算属性

2.定义实例方法和类型方法

3.定义新的构造方法

4.定义下标方法

5.定义嵌套类型

6.使一个已有的类遵守协议

7.对协议进行扩展添加新的方法

二、使用扩展添加计算属性

        使用extension来声明扩展,示例代码如下:

1//创建一个类 有两个属性 2class MyClass { 3 var name:String 4 var age:Int 5 init(){ 6 name = "HS" 7 age = 24 8 } 9} 10//为MyClass类扩展一个计算属性 11extension MyClass { 12 var nameAndAge:String{ 13 return "\(name)"+"\(age)" 14 } 15} 16var obj = MyClass() 17obj.nameAndAge

三、使用扩展添加构造方法

        需要注意的是,扩展不能为类添加指定构造方法,只可以为其添加便利构造方法,示例代码如下:

1//创建一个类 有两个属性 2class MyClass { 3 var name:String 4 var age:Int 5 init(){ 6 name = "HS" 7 age = 24 8 } 9} 10extension MyClass{ 11 convenience init(name:String,age:Int){ 12 self.init() 13 self.name=name 14 self.age=age 15 } 16} 17var obj2 = MyClass(name: "ZYH", age: 24)

四、使用扩展添加实例方法与类型方法

        扩展可以为一个类型添加实例方法与类型方法,示例如下:

1//创建一个类 有两个属性 2class MyClass { 3 var name:String 4 var age:Int 5 init(){ 6 name = "HS" 7 age = 24 8 } 9} 10 11extension MyClass{ 12 func logName() -> String { 13 print(name) 14 return name 15 } 16 class func logClassName(){ 17 print("MyClass") 18 } 19} 20 21var obj3 = MyClass() 22obj3.logName() 23MyClass.logClassName()

对于值类型的扩展,可以使用可变方法来修改实例本身,示例如下:

1extension Int{ 2 //修改本身需要使用nutating 3 mutating func change() { 4 self = self*self 5 } 6} 7var count = 3 8count.change() 9//打印9 10print(count)

专注技术,热爱生活,交流技术,也做朋友。

——珲少 QQ群:203317592

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Swift 简介

Swift和ObjectiveC的主要区别1,编程范式Swift可以面向协议编程、函数式编程、面向对象编程。Swift语言引入了协议、协议的扩展、泛型等新特性,因此使用Swift语言可以很好地面向协议编程;Swift语言将函数和闭包提升为语言的一等公民,函数可以作为一个变量、可以作为其他函数的参数、作为其他函数的返回值等来传递,所以

Swift讲解专题九——枚举

Swift讲解专题九——枚举一、引言      在ObjectiveC语言中,没有实际上是整型数据,Swift中的枚举则更加灵活,开发者可以不为其分配值类型把枚举作为独立的类型来使用,也可以为其分配值,可以是字符,字符串,整型或者浮点型数据。二、枚举语法      Swift中enum关

Swift专题讲解十六——ARC在Swift中的应用

Swift专题讲解十六——ARC在Swift中的应用一、引言      ARC(自动引用计数)是ObjectiveC和Swift中用于解决内存管理问题的方案。在学习ObjectiveC编程时经常会学习到一个关于ARC的例子:在一个公用的图书馆中,每次进入一人就将卡插入,走的时候将自