Swift 2 学习笔记 17.扩展和泛型

课程来自慕课网liuyubobobo老师


扩展
  • 扩展基础
class Rectangle{
    var width: Double = 0.0
    var height: Double = 0.0
    
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }
}

extension Rectangle{
    func size() -> Double{
        return self.width * self.height
    }
    // 扩展中只能添加计算属性
    // 扩展中只能添加方便构造函数
}

let rect = Rectangle(width: 3, height: 2)
rect.size()  // 6
  • 扩展标准库
extension Int {
    var square: Int {
        return self*self
    }
}

let num = 6
num.square  // 36
  • 泛型函数
func swapTowNum<T>(_ num1: inout T, _ num2: inout T) {
    (num1,num2) = (num2,num1)
}

var a = 1.0
var b = 2.0
swapTowNum(&a, &b)
  • 泛型类型
struct Stack<T> {
    var items = [T]()
    
    func isEmpty() -> Bool {
        return items.count == 0
    }
    
    mutating func push(_ item: T) {
        items.append(item)
    }

    mutating func pop() -> T? {
        guard !self.isEmpty() else {
            return nil
        }
        return items.removeLast()
    }
}

var s = Stack<Int>()
s.push(1)
s.pop()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本章将会介绍 泛型所解决的问题泛型函数类型参数命名类型参数泛型类型扩展一个泛型类型类型约束关联类型泛型 Where...
    寒桥阅读 660评论 0 2
  • 泛型(Generics) 泛型代码允许你定义适用于任何类型的,符合你设置的要求的,灵活且可重用的 函数和类型。泛型...
    果啤阅读 705评论 0 0
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,073评论 2 89
  • 一个人曾经救过一只猫。猫为了感恩把它认为自己不舍得吃的死鱼放在那人的门口。当人开门时看到有发臭的死鱼在门口于是抓起...
    渔美香9阅读 372评论 0 0
  • 农历年过去了,今年是工作后的第六年,小时侯感觉时间过的很慢,工作后觉得时间过的太快,不知不觉时间就溜走了,对于过年...
    星辰pc阅读 169评论 0 0