Swift4.0新特性(下)

Swift的180个介绍

  • 一、新增一个swapAt方法

  • for example(可以很方便的互换两个元素)

var numbers = [1,2,3,4,5,6]
print(numbers)  // [1,2,3,4,5,6]
numbers.swapAt(2, 5)
print(numbers)  // [1, 2, 6, 4, 5, 3]
swap(&numbers[0], &numbers[1])
print(numbers)  // [2, 1, 6, 4, 5, 3]
打印效果.png

  • 二、SE-0148使用泛型下标操作符

  • 正常情况下

struct JSON {
      private var data: [String: Any]
      init(data: [String: Any]) {
          self.data = data
      }
      subscript(key: String) -> Any? {
          return data[key]
      }
}
let json = JSON(data: [
        "name": "MG明明",
        "age": 43
    ])
let name: String? = json["name"] as? String  // "MG明明"
let age: Int? = json["age"] as? Int          // 43
  • 修改泛型

struct JSON {
      private var data: [String: Any]
      init(data: [String: Any]) {
          self.data = data
      }
      subscript <T>(key: String) -> T? {
          return data[key] as? T
      }
}
let json = JSON(data: [
        "name": "MG明明",
        "age": 43
    ])
let name: String? = json["name"]   // "MG明明"
let age: Int? = json["age"]        // 43

  • 三、#SE-0156 Subtype existential
protocol P {}
struct S : P {}
class C : P {}
class D { }
let t: AnyObject & P = S() // Compiler error: S is not of class type
let u: AnyObject & P = C() // Compiles successfully
let v: P & AnyObject = C() // Compiles successfully
let w: P & AnyObject = D() // Compiler error: class D does not conform to protocol P
protocol P {}
class C {}
class D : C { }
class E : C { }
class F : D, P { }
let t: C & D & P = F() // Okay: F is a subclass of D and conforms to P
let u: D & P = t       // Okay: D & P is equivalent to C & D & P
let v: C & D & P = u   // Okay: C & D & P is equivalent to D & P
let w: D & E & P       // Compiler error: D is not a subclass of E or vice-versa


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift 4是苹果计划于2017年秋季推出的最新版本,其主要重点是提供与Swift 3代码的源兼容性,并努力实现...
    Lewis海阅读 12,702评论 7 18
  • Swift 4是苹果最新推出的一次语言升级,计划在2017年秋发布测试版。它的主要目标是提供与Swift 3的源代...
    山天大畜阅读 7,845评论 0 2
  • 本篇文章翻译自:What’s New in Swift 3?原作者:Ben Morrow on June 15, ...
    matrix_lab阅读 5,619评论 4 9
  • 最新在写swift的时候感觉不怎么顺手,于是把新特性看了一遍,顺便做一下笔记,加深一下记忆。 1、语法改进 ext...
    傍观者阅读 3,517评论 0 1
  • #1.添加Codable协议,方便自定义数据类型序列化#2.添加定义多行字符串语法#3.改进key-value c...
    爱抽烟的芭比阅读 32,676评论 8 38