import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()//扩展用于6个方面,添加计算属性,添加静态计算属性,定义实例方法,定义类型方法,提供新的构造器,定义附属脚本,定义和使用新的嵌套类型,使一个已有类型符合某个协议。理论上扩展可以写在任何的代码块存放处,但是建议最好可以写在单独的文件中,便于管理//添加属性和方法addPropertyAndMethod()//添加构造器addInitializeMethod()}func addPropertyAndMethod() {var money:Double = 100_000_000_000_000debugPrint("津巴布韦货币兑换成人民币:\(money.CNY)")debugPrint(Double.whoAmI())}func addInitializeMethod() {var somebody = NightWatcher()somebody.say()var tarly = NightWatcher(name: "Tarly")tarly.say()}
}extension Double {//扩展增加了类型属性static var name = "扩展Double"static var factor:Double {return 12_500_000_000_000}//增加了计算方法var CNY:Double {return self / Double.factor}//扩展增加了类型方法static func whoAmI()->String {return "我是\(name)我的类型为\(self)"}
}struct Sword {var length = 0.5var materials:String = "由普通钢铸而成"
}class NightWatcher {var sword: Swordvar name: Stringinit(name: String, sword:Sword) {self.name = nameself.sword = sword}//扩展类类型,只能增加便捷构造器,而不能增加指定构造器和析构器convenience init() {self.init(name: "守夜人", sword:Sword())}
}extension Sword {init(brand:String) {if brand == "异鬼克星" {self.init(length: 1, materials: "由龙晶铸造而成")} else {self.init()}}var description:String {return "长\(length)米\(materials)"}
}extension NightWatcher {//扩展类类型,只能增加便捷构造器,而不能增加指定构造器和析构器,这里如果吧convenience去掉就会报错convenience init(name:String) {if name == "Tarly" {self.init(name:name, sword:Sword(brand: "异鬼克星"))} else {self.init()}}func say() {debugPrint("我是\(name) 我的剑\(sword.description)")}
}

Extension 扩展相关推荐

  1. 【Android Gradle 插件】Extension 扩展类型 ( Module 引入插件类型 | application 插件 | library 插件 | Variants 变体列表 )

    文章目录 一.Module 引入插件类型 1.com.android.application 插件 2.com.android.library 插件 二.Extension 扩展类型 三.applic ...

  2. Unity Cinemachine智能相机教程(五):VirtualCamera的Extension扩展

    摘要:[长文预警,先收藏后品尝]如何让相机更智能呢?Extension扩展可以给虚拟相机带来无限的可能. 洪流学堂,让你快人几步.你好,我是跟着大智(VX: zhz11235)学Unity的萌新,我叫 ...

  3. Safari Extension 扩展插件中关于权限的二三事(例如设置权限、权限类型等)

    Safari Extension 扩展插件的权限相关的内容大致分为下面几个方面: 用户要掌控扩展(Users are in control) Safari Extension 扩展插件是要在用户控制下 ...

  4. Category(分类/类目)、Protocol(协议)、Extension(扩展/延展)

    Category(分类/类目): 利用Objective-C的动态运行时分配机制,Category提供了一种比继承更为简洁的方法来对class进行扩展,无需创建对象类的子类就能为现有的类添加新方法,可 ...

  5. PostgreSQL编写记录删除表格信息的Extension扩展

    摘要:因为作者水平有限,暂且只是测试Extension扩展用例, 一个典型的extension包含多个SQL对象.举个例子,如果我们创建一个新的数据类型(data type),那可能同时还需要与之相关 ...

  6. Swift extension 扩展实用Tips

    extension基本功能 Swift扩展是为结构体.类和枚举增加新功能.与OC的分类相似,但是没有扩展名字. 常用于: 添加类/实例计算属性 添加类/实例方法 提供新便携初始化器 定义和使用新内嵌类 ...

  7. 不可不知的C#基础 1. -- Extension 扩展方法

    背景 前几天有同事问到我一个简单的功能, 就是当你使用枚举时如何给每个一元素增加描述字符串并且可以很容易的读取出来. 比如有一个枚举类型是列出对一个问题给出的选项(例如: 同意?不同意?中立?): p ...

  8. swift为UIView添加extension扩展frame

    添加swift file:UIView+Extension import UIKitextension UIView {// x var x : CGFloat {get {return frame. ...

  9. ios 输入法扩展_ios 应用扩展—— Keyboard Extension

    注意!转载请注明出处和作者,谢谢 自定义键盘扩展 我们来做一个可以进行科学运算的计算器键盘吧. 2. 创建 Keyboard Extension 扩展 下一步,命名,完成. 修改运行时执行的主应用 在 ...

最新文章

  1. 四大运营商的5G部署路线一览
  2. Python学习笔记--数据类型
  3. linux中物理cpu、逻辑cpu以及core、vcore
  4. “真还传”即将完结?锤子科技撤回全部破产申请 罗永浩称年后回归科技界
  5. C++常见面试题,来看看你会几个~~
  6. python时序数据分析--以示例说明
  7. python 逻辑回归 复杂抽样_如何用Python进行抽样?
  8. 厦门大学人工智能研究院招收2022年推荐免试研究生
  9. 角度和弧度的相互换算
  10. python计算球体表面积和体积_图解球体表面积和体积正确计算方法及计算公式(原创)...
  11. Python基于Django的汽车维修保养系统(源码调试+讲解+文档)
  12. 关于 MySQL bug 91418 一些看法
  13. php支付宝手机网站支付源码,Ecshop 支付宝手机网页支付免费版
  14. 计算机管理员无法打开软件,win10系统提示管理员已阻止你运行此应用无法打开应用的解决方法...
  15. 微信有趣的“隐身”功能!关掉这几个开关,别人怎么都搜不到你
  16. C语言丨整蛊必备小程序,好玩炸翻天(附源码)
  17. Unity 基础常用的脚本(一)
  18. 《人生的智慧》- 卡耐基
  19. 删除无法删除的文件/文件夹
  20. AVR ATMEGA8的初次使用

热门文章

  1. 《易道客》常见问题解答 FAQ
  2. 贪心——陶陶摘苹果(升级版)
  3. python传奇自动打怪脚本_简单挂如何设置定时传奇挂机自动打怪过验证脚本
  4. 【POJ 3243】Clever Y 拓展BSGS
  5. 数据孪生景区三维实景实现了“足不出户游天下”
  6. docker删除php,docker的卸载及重新安装方法
  7. 移动发送短信的状态报告
  8. windows系统语言栏无法显示的解决方法
  9. AutoLuminous4.zip下载
  10. 将顺序二叉树存储序列转化为链式存储序列-c语言