Swift专题讲解二十——扩展

简介: Swift专题讲解二十——扩展

一、简介

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

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

1.添加计算属性

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

3.定义新的构造方法

4.定义下标方法

5.定义嵌套类型

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

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

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

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

//创建一个类 有两个属性
class MyClass {

var name:String
var age:Int
init(){
    name = "HS"
    age = 24
}

}
//为MyClass类扩展一个计算属性
extension MyClass {

var nameAndAge:String{
    return "\(name)"+"\(age)"
}

}
var obj = MyClass()
obj.nameAndAge
三、使用扩展添加构造方法

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

//创建一个类 有两个属性
class MyClass {

var name:String
var age:Int
init(){
    name = "HS"
    age = 24
}

}
extension MyClass{

convenience init(name:String,age:Int){
    self.init()
    self.name=name
    self.age=age
}

}
var obj2 = MyClass(name: "ZYH", age: 24)
四、使用扩展添加实例方法与类型方法

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

//创建一个类 有两个属性
class MyClass {

var name:String
var age:Int
init(){
    name = "HS"
    age = 24
}

}

extension MyClass{

func logName() -> String {
    print(name)
    return name
}
class func logClassName(){
    print("MyClass")
}

}

var obj3 = MyClass()
obj3.logName()
MyClass.logClassName()
对于值类型的扩展,可以使用可变方法来修改实例本身,示例如下:

extension Int{

//修改本身需要使用nutating
mutating func change() {
     self = self*self
}

}
var count = 3
count.change()
//打印9
print(count)

目录
相关文章
|
9月前
|
存储 Swift iOS开发
31 Swift 继续聊聊协议扩展
Swift 继续聊聊协议扩展
61 0
|
14天前
|
存储 Swift 索引
Swift开发——索引器扩展
扩展用于向已存在的类型(例如,类、结构体、枚举和协议等)中添加新的功能,扩展甚至可以向系统类型(包括无法查阅代码的类型)中添加新的功能,但是扩展不能覆盖原类型中已有的方法,扩展也不能向类中添加新的存储属性。
34 6
Swift开发——索引器扩展
|
2月前
|
存储 设计模式 安全
【Swift开发专栏】Swift的扩展与分类
【4月更文挑战第30天】Swift的扩展和枚举分类提供类型添加新功能的灵活性。文章分为三部分:扩展用于为已有类型添加属性、方法等,适用于功能扩展、代码组织;枚举分类定义相关值,支持原始值和关联值,用于状态表示和类型安全选项。扩展和分类在实际开发中应用于类型增强、状态管理及组合使用。了解并掌握这些特性,能提升代码的灵活性和可维护性。更多高级特性和应用值得进一步探索。
|
Swift
Swift之UIView的扩展
Swift之UIView的扩展
147 0
Swift之UIView的扩展
|
存储 前端开发 Swift
Swift实用小册19:Extension扩展的使用
在本章中,你将学会Extension扩展的使用方法。
336 0
Swift实用小册19:Extension扩展的使用
|
存储 编译器 Swift
Swift5.0 - day7-扩展、访问控制、内存管理
Swift5.0 - day7-扩展、访问控制、内存管理
151 0
Swift5.0 - day7-扩展、访问控制、内存管理
Swift5.1—扩展协议和默认实现
Swift5.1—扩展协议和默认实现
320 0
|
存储 Swift iOS开发
Swift5.1—扩展
Swift5.1—扩展
103 0
|
Swift iOS开发
21.Swift学习之扩展
扩展 为现有的类、结构体、枚举类型、协议添加了新功能。扩展和 Objective-C 中的分类类似。 扩展可以: 添加计算属性; 定义方法; 提供新的构造函数; 使现有的类型遵循某协议 Swift中使用extension关键字实现扩展 语法 extension SomeType { // new functionality to add to SomeType goes here } 扩展可以使已有的类型遵循一个或多个协议。
1227 0