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

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".

主站蜘蛛池模板: 安图县| 九江市| 日照市| 汝州市| 鹤山市| 商河县| 洛宁县| 加查县| 类乌齐县| 永寿县| 德令哈市| 江华| 湟中县| 临西县| 黄骅市| 育儿| 青岛市| 聂荣县| 淅川县| 班玛县| 南部县| 孝义市| 大荔县| 肥乡县| 建宁县| 舒城县| 兴业县| 兴化市| 抚顺市| 汉沽区| 鹤庆县| 百色市| 郯城县| 霍城县| 广水市| 措勤县| 垦利县| 泰州市| 巴青县| 和硕县| 兰溪市|