在Swift中将其名称作为字符串访问struct属性
发布时间:2020-12-14 05:03:44 所属栏目:百科 来源:网络整理
导读:假设我在 Swift中有以下结构: struct Data { let old: Double let new: Double} 现在我有一个包含数据结构数组的类: class MyClass { var myDataArray: [Data]} 现在让我们说我想计算旧值或新值的平均值: func calculateAverage(oldOrNew: String) - Doub
假设我在
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |