我有一个种子值Triangle (Bool)
和一个发出值Circle (Int)
的observable。我的目的是每次从该observable发出一个值时生成一个新的observable (Triangle, Circle)
,转换Triangle
值,否定当前值。这是我的大理石图:
但我无法实现它,我不知道scan
是否是正确的运算符。这是我的代码:
typealias Triangle = Bool
typealias Circle = Int
func scan() {
let triangle: Triangle = false
circleObservable
.scan(triangle, accumulator: ({ (triangle, circle) -> (Triangle, Circle) in
return (!triangle, circle)
}))
}
这会生成编译器错误:
无法转换类型的值'(三角形,圆形) - > (三角形, Circle)'(又名'(Bool,Int) - >(Bool,Int)')预期的参数类型 '(_,_) - > _'
谢谢!
答案 0 :(得分:1)
circleObservable.scan((Triangle(false), Circle()), accumulator: { lastValue, circle -> (Triangle, Circle) in (!lastValue.0, circle) })
或更简单:
typealias Triangle = Bool
typealias Circle = Int
func scan(circle: Observable<Circle>) -> Observable<(Triangle, Circle)> {
return circle.scan((Triangle(false), Circle())) { (!$0.0, $1) }
}
答案 1 :(得分:0)
也许&#39;抛出&#39;不见了?看看这个工作示例 - https://github.com/maxvol/RaspSwift/blob/master/RaspSwift/RaspAggregator.swift