我有一个struct ExampleStruct
和一个自定义的subscript
。结构数据是一个固定的私有字典value
。该结构有一个元素Sum
,它本质上是私有字典中其他元素的总和
struct ExampleStruct {
private var value: [String:Double] {
didSet {
value["Sum"] = value.filter{$0.key != "Sum"}.reduce(0.+)
}
}
init(){
value = ["Ind1":12, "Ind2":13, "Sum":25]
}
subscript(index: String) -> Double {
get {
// some error checking too about index
return value[index]
}
set {
value[index] = newValue
}
字符串
我想使用这个结构作为一个计算属性,它依赖于另一个函数,该函数通过另一个依赖函数依赖于具有“Sum”索引的结构的值。sampleFunc类似于:
func sampleFunc() -> ExampleStruct {
...
sampleFunc2(sum: exampleImplementation["Sum"])
...
}
型
我使用了以下代码,但它是递归的:
var exampleImplementation: ExampleStruct {
return sampleFunc() //sampleFunc depends on exampleImplementation["Sum"]
//func returns ExampleStruct
}
}
型
但我只需要函数来设置“Sum”以外的索引。所以我想要这样的东西:
var exampleImplementation: ExampleStruct {
if INDEX=="SUM" { //
return SOME BACKING VALUE
} else {
return sampleFunc()[INDEX NOT EQUAL TO "Sum"] //func depends on exampleImplementation["Sum"]
//func returns ExampleStruct
}
}
型
对于在计算属性中有下标的结构,有没有一种方法可以实现这一点?
1条答案
按热度按时间tkclm6bt1#
如果我们忽略不一致的代码,那么解决方案不是简单地向
subscript
方法的set
部分添加一个过滤器吗?字符串
我的完整结构版本
型
例
型
9.0