在最新版本的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
对象并知道查询变量a
和b
,因为这些是协议定义的两个。例如,我可能想要总结协议中所有变量的值。例如像这个非功能性的代码。
let obj = SomeClass()
let paths = Foo.allKeyPaths
let total = paths.reduce(0) { $0 + obj[keyPath: $1] }
在我的实际使用案例中,协议有大约20个变量。我不想对一组键进行硬编码,因为有人可能会在协议中添加一个新变量,但忘记更新该数组。我希望它在运行时是动态的。
答案 0 :(得分:1)
不幸的是,在当前版本的Swift中,这是不可能的。