假设我在
Swift中有以下结构:
struct Data { let old: Double let new: Double }
class MyClass { var myDataArray: [Data] }
现在让我们说我想计算旧值或新值的平均值:
func calculateAverage(oldOrNew: String) -> Double { var total = 0.0 count = 0 for data in myDataArray { total += data.oldOrNew count++ } return total / Double(count) }
然后:
let oldAverage = calculateAverage("old") let newAverage = calculateAverage("new")
但这显然不起作用,因为oldOrNew不是我的struct的成员.
如何从“旧”或“新”访问旧的或新的?
解决方法
那个“无反射”的解决方案呢?
struct Data { let old: Double let new: Double func valueByPropertyName(name:String) -> Double { switch name { case "old": return old case "new": return new default: fatalError("Wrong property name") } } }
现在你可以做到这一点
let data = Data(old: 0,new: 1) data.valueByPropertyName("old") // 0 data.valueByPropertyName("new") // 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。