gpt4 book ai didi

c# - 将一个可观察值与另一个可观察值的最新值相结合

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

我正在尝试合并两个值共享某个键的可观察值。

我想在第一个可观察量产生新值时产生一个新值,并结合第二个可观察量的最新值,选择取决于第一个可观察量的最新值。

伪代码示例:

var obs1 = Observable.Interval(TimeSpan.FromSeconds(1)).Select(x => Tuple.create(SomeKeyThatVaries, x)

var obs2 = Observable.Interval(TimeSpan.FromMilliSeconds(1)).Select(x => Tuple.create(SomeKeyThatVaries, x)

from x in obs1
let latestFromObs2WhereKeyMatches = …
select Tuple.create(x, latestFromObs2WhereKeyMatches)

有什么建议吗?

显然,这可以通过订阅第二个可观察对象并创建一个字典来实现,该字典包含可按键索引的最新值。但我正在寻找一种不同的方法..

使用场景:根据股票报价流计算的一分钟价格柱。在这种情况下,关键是代码,字典包含具体代码的最新询价和出价,然后用于计算。

(顺便说一句,谢谢 Dave 和 James,这是一次非常富有成果的讨论)

(抱歉格式问题,很难在 iPad 上正确处理..)

最佳答案

...您为什么要寻找不同的方法?听起来你对我来说是对的。这是简短的代码……粗略地说,它类似于:

var cache = new ConcurrentDictionary<long, long>();    
obs2.Subscribe(x => cache[x.Item1] = x.Item2);
var results = obs1.Select(x => new {
obs1 = x.Item2,
cache.ContainsKey(x.Item1) ? cache[x.Item1] : 0
});

归根结底,C# 是一种 OO 语言,线程安全可变集合的繁重工作已经为您完成。

可能有花哨的 Rx 方法(感觉可能涉及连接)...但是它的可维护性如何?它将如何表现?

0.02 美元

关于c# - 将一个可观察值与另一个可观察值的最新值相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507484/

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