Swift 5 新特性之二 Identity key path

在理解身份特徵路徑(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>, 因爲它可以用來修改可變值,但其不能修改不可變的引用。

更多

獲取更多內容請關注微信公衆號豆志昂揚:

  • 直接添加公衆號豆志昂揚
  • 微信掃描下圖二維碼;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章