关于WWDC的故事...寒哥管理的技术专题Swifty Coding

WWDC之Advanced Swift

2016-01-03  本文已影响105人  One9398

前言

作为Swift语言高级特性的介绍和深入,本Session,主要内容为

内容

Taking Control of syntax

extension String  {
    // 1
    subscript(a: Int) -> Character? {
    // 2
        get {
            if a > self.characters.count {
                return nil  // out of index
            } else {
                return self[self.startIndex.advancedBy(a-1)]
            }
        }
        set {
        }
    }
}
if let c = "abcd"[1] {
    print(c)  //  "a"
}

Generic Programming

  // 1 实现GeneratorType协议
  public protocol GeneratorType {
      typealias Element
      public mutating func next() -> Self.Element?
  }
  
  struct CustomGenerator<T>: GeneratorType {
    typealias Element = T // 基于类型推断可省略
    mutating func next() -> T? {
      if items.isEmpty { return nil }
      let ret = items[0]
      items = items[1..<items.count]
      return ret
    }
    var items: Slice<T> // 能够裁剪的集合
  }
  
  // 2 实现Sequence协议
  public protocol SequenceType {
    typealias Generator : GeneratorType
    public func generate() -> Self.Generator
  }
  extension CustomObject: Sequence {
    func generate() -> CustomGenerator<T> {
      return CustomGenerator(items[0..<itemCount])
    }
  }
  
  // 3 实现for-in调用
  for i in CustomObject {
    ....
  }

Swift Model

做为一门静态编译语言,对运行时环境的要求小,能与C,Objective-C等语言进行充分交互,Swift编译生成原始代码,使得在设备上的运行速度十分快速,让App启动时不再重编译和加载延迟.下图为Swift优化的编译架构

编译架构.png

结尾

作为Swift语言的高级内容介绍,出现了很多难以理解知识点,以及Swift语言特性实现,但也收获了几个知识点比如如何实现Swift闭包的递归;如何自定义下标函数;以及使用一些简单的系统标准库协议来扩展自己的代码.
最后,还是需要多实践多写写Swift代码,来加深对该语言的理解,再回过头来看一遍这个Session,应该会有更大的体会和理解.

上一篇下一篇

猜你喜欢

热点阅读