美文网首页Swift编程
Swift 5 新特性系列之二 Identity key pat

Swift 5 新特性系列之二 Identity key pat

作者: 豆志昂扬 | 来源:发表于2019-04-20 20:07 被阅读1次

在理解身份特征路径(Identity key path)之前,必须要对key path有清晰的认识,如key path的基本定义,ReferenceWritableKeyPath和WritableKeyPath的关系,如何把两个key path结合起来使用等。如有疑惑可以参看这里

Identity key path - 身份特征路径?

提案出处:

https://github.com/apple/swift-evolution/blob/master/proposals/0227-identity-keypath.md

细节

在Swift中每个值都有一个特别的属性.self, 我们使用它来获取整个值。
从兼容Cocoa KVC考虑的话,身份特征路径(Identity key path)对应这 @“self”。

var value = \Int.self
var height = 1
print(height[keyPath: value]) // 1
height[keyPath: value] = 5
print(height[keyPath: value]) // 5

以此类推,我们可以通过 .self 来访问 self 本身。

let id = \Int.self

x[keyPath: id] = 3
print(x[keyPath: id]) // 输出3

struct Employee {
  var name: String
  var position: String
}

func updateValue(of vc: ValueController<Employee>) {
  vc[\.self] = Employee(name: "Cassius Green", position: "Power Caller")
}

身份特征路径(identity key path) 其实是一个WritableKeyPath<T, T>, 因为它可以用来修改可变值,但其不能修改不可变的引用。

更多

获取更多内容请关注微信公众号豆志昂扬:

  • 直接添加公众号豆志昂扬
  • 微信扫描下图二维码;

相关文章

  • Swift 5 新特性系列之二 Identity key pat

    在理解身份特征路径(Identity key path)之前,必须要对key path有清晰的认识,如key pa...

  • Swift5 新特性预览

    Swift5 新特性预览 Swift5 新特性预览

  • iOS - swift5新特性链接地址

    swift5新特性链接地址 Raw strings in Swift swift-evolution

  • Swift 5.2 的几个新特性

    Swift 5.2 的几个新特性Swift 5.2 的几个新特性

  • Swift 5新特性

    在Xcode10.2终于可以用上Swift5了,这次发布带来了ABI(应用程序机器二元码界面(英语:applica...

  • Swift 5 新特性

    概览 Swift 5 发布了,这是一个重要里程碑。 此版本终于迎来了 ABI 稳定,因此 Swift 运行时现在可...

  • Swift 5 新特性

    2019 年,苹果公布了新的 Swift5, 在开发官网明确提出了 Swift5 新增的 5 大功能],包括: 1...

  • Java11的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java15的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java12的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

网友评论

    本文标题:Swift 5 新特性系列之二 Identity key pat

    本文链接:https://www.haomeiwen.com/subject/upylgqtx.html