Tôi đang sử dụng RxSwift 2.0.0-betaRxSwift: Sử dụng Zip với các loại quan sát khác nhau
Làm cách nào để kết hợp 2 loại quan sát khác nhau theo cách nén?
// This works
[just(1), just(1)].zip { intElements in
return intElements.count
}
// This doesn't
[just(1), just("one")].zip { differentTypeElements in
return differentTypeElements.count
}
Cách giải quyết hiện tại mà tôi có là ánh xạ mọi thứ vào một bộ tùy chọn kết hợp các loại, sau đó nén tuple tùy chọn thành một bộ không bắt buộc.
let intObs = just(1)
.map { int -> (int: Int?, string: String?) in
return (int: int, string: nil)
}
let stringObs = just("string")
.map { string -> (int: Int?, string: String?) in
return (int: nil, string: string)
}
[intObs, stringObs].zip { (optionalPairs) -> (int: Int, string: String) in
return (int: optionalPairs[0].int!, string: optionalPairs[1].string!)
}
Rõ ràng là khá xấu xí. Cách tốt hơn là gì?
Doh! Tôi đã bị mắc kẹt khi sử dụng zip của các loại bộ sưu tập mở rộng thay vì chỉ là 'zip' thông thường. Cảm ơn! – GDanger
Có an toàn để giả định rằng zip là đồng bộ không? – user805981