加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读