Swift 如何在@PropertyRapper中获取家长的自我?

Swift 如何在@PropertyRapper中获取家长的自我?,swift,swiftui,combine,Swift,Swiftui,Combine,我只想在事件之间经过指定的间隔后处理已更改的@发布的someVar。如何在propertyRapper中获得SomeClass的self private var cancelableset:Set=[] 已发布扩展,其中值:equalable{ 初始化( wrappedValue defaultValue:值, 对于dueTime:S.SchedulerTimeType.Stride, 调度员:S, 接收器:@escaping(Value)->(),其中S:Scheduler{ self.ini

我只想在事件之间经过指定的间隔后处理已更改的
@发布的someVar
。如何在
propertyRapper
中获得
SomeClass
self

private var cancelableset:Set=[]
已发布扩展,其中值:equalable{
初始化(
wrappedValue defaultValue:值,
对于dueTime:S.SchedulerTimeType.Stride,
调度员:S,
接收器:@escaping(Value)->(),其中S:Scheduler{
self.init(initialValue:defaultValue)
项目价值
.debounce(用于:dueTime,调度程序:调度程序)
.removeDuplicates()
.sink(接收值:sink)
.store(位于:&可取消集)
}
}
上课{
@出版(
适用于:0.5,
调度程序:RunLoop.main,
接收器:{val in
//如何获得某个班级的自我
print(self.someVar2)//错误:类型为“(SomeClass)->()->SomeClass”的值没有成员“someVar2”
})
var someVar=“”
var someVar2=“”
}

我在另一个论坛上得到了以下答案

正式的?你不能

非正式地?您可以使用下划线下标- 在swift回购协议中29

这些东西不是官方的,没有保证,也可以是官方的 随时移除

我添加了我的解决方案,但没有使用带下划线的下标

private-var-cancelableset:[字符串:anycancelable]=[:]
已发布扩展,其中值:equalable{
init(wrappedValue-defaultValue:Value){
self.init(initialValue:defaultValue)
}
变异函数(
键:字符串,
对于dueTime:S.SchedulerTimeType.Stride,
调度员:S,
接收器:@escaping(Value)->(),其中S:Scheduler{
打印(键)
如果CancelableSet[键]==nil{
可取消设置[键]=
自我投射价值
.debounce(对于:0.5,调度程序:RunLoop.main)
.removeDuplicates()
.sink(接收值:sink)
}
}
}
上课{
@出版
var someVar=“”{
意志{
_someVar.Observe(key:#函数,for:0.5,scheduler:RunLoop.main){val in
打印(val)
}
}
}
var someVar2=“”
func测试(){
someVar=“a”
someVar=“ab”
someVar=“abc”
}
}
SomeClass().test()

我在另一个论坛上得到了以下答案

正式的?你不能

非正式地?您可以使用下划线下标- 在swift回购协议中29

这些东西不是官方的,没有保证,也可以是官方的 随时移除

我添加了我的解决方案,但没有使用带下划线的下标

private-var-cancelableset:[字符串:anycancelable]=[:]
已发布扩展,其中值:equalable{
init(wrappedValue-defaultValue:Value){
self.init(initialValue:defaultValue)
}
变异函数(
键:字符串,
对于dueTime:S.SchedulerTimeType.Stride,
调度员:S,
接收器:@escaping(Value)->(),其中S:Scheduler{
打印(键)
如果CancelableSet[键]==nil{
可取消设置[键]=
自我投射价值
.debounce(对于:0.5,调度程序:RunLoop.main)
.removeDuplicates()
.sink(接收值:sink)
}
}
}
上课{
@出版
var someVar=“”{
意志{
_someVar.Observe(key:#函数,for:0.5,scheduler:RunLoop.main){val in
打印(val)
}
}
}
var someVar2=“”
func测试(){
someVar=“a”
someVar=“ab”
someVar=“abc”
}
}
SomeClass().test()