官术网_书友最值得收藏!

Smart key paths

Another important change introduced by Swift 4 is that of smarter key paths. Swift key paths are strongly typed and enforce a compile time check and remove a common runtime error.

You write a key path by starting with a backslash: `\Book.title`. Every type automatically gets a `[keyPath: …]` subscript to get or set the value at the specified key path:

struct Book {
var title = ""
let price : Float
}
let titleKeyPath = \Book.name
let mathsBook = Book(name: "Algebra", price: 10.50)
mathsBook[keyPath: titleKeyPath]

The value in the earlier mentioned keyPath is "Algebra".

The titleKeyPath object defines a citation to the name property. Then, it can be used as a subscript on that object. You can store and manipulate key paths. For example, you can append additional segments to a key path to drill down further. Key paths are composed of a root, and then you can drill down by following a combination of properties and subscripts.

If you change the variable of mathsBook from let to var, a specific property can also be modified through the keyPath subscript syntax:

mathsBook[keyPath: titleKeyPath] = "Trigonometry"
let newTitle = mathsBook[keyPath: titleKeyPath]

The value in the mentioned keyPath is "Trigonometry".

主站蜘蛛池模板: 永德县| 开封市| 新兴县| 抚远县| 洪泽县| 梅河口市| 宁安市| 大连市| 中宁县| 普陀区| 新闻| 台东市| 萨嘎县| 宜丰县| 章丘市| 双峰县| 沁水县| 荔浦县| 建平县| 巴塘县| 温州市| 普洱| 柳州市| 平凉市| 屏南县| 阜平县| 永定县| 屯昌县| 公主岭市| 郯城县| 邵阳县| 迭部县| 蚌埠市| 高青县| 广昌县| 克山县| 泰顺县| 公主岭市| 济宁市| 绵竹市| 道孚县|