1

在最新版本的 Swift 中,有没有办法获取协议定义的所有变量?想象一下我有类似的东西:

protocol Foo {
    var a: Double { get set }
    var b: Double { get set }
}

class SomeClass: Foo {
    var a: Double = 1
    var b: Double = 2
    var c: Int = 3
}

我想要一种获取SomeClass对象并知道查询变量的方法ab因为这是协议定义的两个。例如,我可能想总结协议中所有变量的值。例如,类似这种非功能代码的东西。

let obj = SomeClass()
let paths = Foo.allKeyPaths
let total = paths.reduce(0) { $0 + obj[keyPath: $1] }

在我的实际用例中,该协议有大约 20 个变量。例如,我不想硬编码一个键数组,因为有人可能会向协议添加一个新变量但忘记更新该数组。我希望它在运行时是动态的。

4

1 回答 1

1

不幸的是,这在当前版本的 Swift 中是不可能的。

于 2018-04-11T06:41:12.370 回答