ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

swift基础day7---扩展

2020-12-10 23:30:58  阅读:158  来源: 互联网

标签:添加 day7 self 扩展 方法 --- 实例 swift 属性


扩展(extension)

扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。扩展可以实现:

  • 添加计算型实例属性和计算型类属性
  • 定义实例方法和类方法 提供新的构造器
  • 定义下标
  • 定义和使用新的嵌套类型
  • 使已经存在的类型遵循一个协议
    对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。
计算型属性扩展:

扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。

构造器扩展

扩展可以给一个类添加新的便利构造器,但是它们不能给类添加新的指定构造器或者析构器。指定构造器和析构器必须始终由类的原始实现提供。
方法扩展:

extension Int {
    func repetitions(task: () -> Void){
        for _ in 0..<self {
            task()
        }
    }
}
2.repetitions {
    print("Hello!")
}
// Hello!
// Hello!

通过扩展添加的实例方法同样也可以修改实例本身。结构体和枚举的方法,若是可以修改 self 或者它自己的属性,则必须将这个实例方法标记为 mutating,就像是改变了方法的原始实现。

可变实例方法扩展
extension Int{
    mutating func square(){
        self = self * self
    }
}
var someInt = 3
someInt.square()  //9

扩展可以给现有的类型添加新的下标,

标签:添加,day7,self,扩展,方法,---,实例,swift,属性
来源: https://blog.csdn.net/b_8196_p/article/details/111025809

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有