让我们定义一个名为CavalIErs的结构和一个名为Player的结构,然后创建每个结构的一个实例:
// an example structstruct Player { var name: String var rank: String}// another example struct,this time with a methodstruct CavalIErs { var name: String var maxPoint: Double var captain: Player func goTomaxPoint() { print("\(name) is Now travelling at warp \(maxPoint)") }}// create instances of those two structslet james = Player(name: "Lebron",rank: "Captain")let irving = CavalIErs(name: "KyrIE",maxPoint: 9.975,captain: james)// grab a reference to the `goTomaxPoint()` methodlet score = irving.goTomaxPoint// call that referencescore()
最后一行创建了一个名为score的goTomaxPoint()方法的引用.问题是,我们不能创建对队长名称属性的引用,但keypath可以做.
let nameKeyPath = \CavalIErs.namelet maxPointKeyPath = \CavalIErs.maxPointlet captainname = \CavalIErs.captain.namelet cavalIErsname = irving[keyPath: nameKeyPath]let cavalIErsMaxPoint = irving[keyPath: maxPointKeyPath]let cavalIErsnameCaptain = irving[keyPath: captainname]
请使用Xcode 9或功能快照进行测试.
总结以上是内存溢出为你收集整理的swift – 用于什么是KeyPath?全部内容,希望文章能够帮你解决swift – 用于什么是KeyPath?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)