Swift 扩展(Extensions)(十四)
来源:互联网 发布:软件开发简历 编辑:程序博客网 时间:2024/06/07 17:33
可以为类添加新功能
UIViewController
extension UIViewController { // 为 UIViewController 添加的新功能写到这里}
Double
extension Double { var km: Double { return self * 1_000.0 } var m : Double { return self } var cm: Double { return self / 100.0 } var mm: Double { return self / 1_000.0 } var ft: Double { return self / 3.28084 } var sq: Double { return self * self }}
ViewController
// 自定义
extension ViewController{ func printfChars() { print("I am char") }}
二 可变实例方法(Mutating Instance Methods)
通过扩展添加的实例方法也可以修改该实例本身。结构体和枚举类型中修改 self 或其属性的方法必须将该实例方法标注为 mutating,正如来自原始实现的可变方法一样。
下面的例子为 Swift 的 Int 类型添加了一个名为 square 的可变方法,用于计算原始值的平方值: 改变Int 值本身
extension Int { mutating func square() { self = self * self }}
三 嵌套类型(Nested Types)
扩展可以为已有的类、结构体和枚举添加新的嵌套类型:
extension Int { enum Kind { case Negative, Zero, Positive } var kind: Kind { switch self { case 0: return .Zero case let x where x > 0: return .Positive default: return .Negative } }}
// 在ViewController
// viewDidLoad中
self.printfChars()let oneInch = 25.4.mmprint("One inch is \(oneInch) meters") // One inch is 0.0254 meters let dou = 23.4.sq print("\(dou)") // 547.56let numbers = [1,2,4,5,6,3,0,-54,-65]self.printIntegerKinds(numbers) // + + + + + + 0 - - var intNumb = 5intNumb.square()print("\(intNumb)") // 25
该例子为 Int
添加了嵌套枚举。这个名为Kind
的枚举表示特定整数的类型。具体来说,就是表示整数是正数、零或者负数。
这个例子还为 Int
添加了一个计算型实例属性,即 Kind
,用来根据整数返回适当的 Kind
枚举成员。
现在,这个嵌套枚举可以和任意 Int
值一起使用了:
func printIntegerKinds(numbers: [Int]) { for number in numbers { switch number.kind { case .Negative: print("- ", terminator: "") case .Zero: print("0 ", terminator: "") case .Positive: print("+ ", terminator: "") } } print("") }
2 0
- Swift 扩展(Extensions)(十四)
- Swift扩展(Extensions)
- Swift 扩展(Extensions)
- Swift-扩展(Extensions)(十八)
- 对照Java学习Swift--扩展(Extensions)
- swift Extensions(官方文档翻译)
- 苹果新的编程语言 Swift 语言进阶(十四)--扩展
- Swift基础(十四)UITextField
- Introducing Swift - Extensions
- Swift扩展(Extension)
- Swift 易忽略的笔记 8):Extensions
- 方法—Swift学习笔记(十四)
- Swift中文教程(十四) 构造器
- swift学习-构造器(十四)
- Swift中文教程(十四) 初始化
- Swift中文教程(十四) 初始化
- Swift基础(二十四)UIScrollView
- 关于分类(category)和类的扩展(extensions)
- Java序列化、反序列化
- HOG特征
- RSG.CFS.v8.0.2 1CD(综合性通用冷弯型钢构件设计工具)
- makefile 错误 make: Nothing to be done for...
- ios webView 同时添加单击和长按手势
- Swift 扩展(Extensions)(十四)
- cgi
- 求次方的几种方法(分治、位运算)
- jquery $(document).ready() 与window.onload的区别
- 微服务的性能模式
- Java调用shell
- 正则表达式常用
- 【剑指offer-Java版】01为了准备面试也为了提升编程技巧开始刷宝典了
- HBase数据迁移(3)-自己编写MapReduce Job导入数据 .