gpt4 book ai didi

c# - 如何在 Rx 中实现 ZipLongest?

转载 作者:行者123 更新时间:2023-11-30 16:55:46 25 4
gpt4 key购买 nike

我正在尝试压缩两个不同长度的可观察序列,但我希望组合序列具有最大序列的长度,并用最短序列的最后一个值填充。

也就是说,如果序列1是[0,1,2],序列2是[0,1,2,3],我希望结果是[(0,0),(1,1) ,(2,2),(2,3)].

我曾尝试根据现有的运算符(例如 Zip 或 CombineLatest)来考虑实现这一点的方法,但它实际上似乎比乍看起来要复杂一些。

最佳答案

这是我的尝试,基于 Enigmativity 的想法:

aSource.Publish(ap => bSource.Publish(bp =>
{
var lastA = ap.TakeLast(1).Replay();
var lastB = bp.TakeLast(1).Replay();
var lastAForEachB = bp.SelectMany(b => lastA);
var lastBForEachA = ap.SelectMany(a => lastB);

var aWithLengthB = ap.Concat(lastAForEachB);
var bWithLengthA = bp.Concat(lastBForEachA);

lastA.Connect();
lastB.Connect();
return aWithLengthB.Zip(bWithLengthA, (a, b) => new { a, b });
}));

关于c# - 如何在 Rx 中实现 ZipLongest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com