为什么
toString()
火,但不是
var a = Observable.Interval(TimeSpan.FromSeconds(1))
.Publish();
a.Subscribe(o =>
{
Console.WriteLine("Test");
});
a.Connect();
我试图在不同的场景中使用MaxBy但是甚至无法使上述功能发挥作用。
这是我更复杂的例子
var a = Observable.Interval(TimeSpan.FromSeconds(1))
.MaxBy(o=>o)
.Publish();
a.Subscribe(o =>
{
Console.WriteLine("Test");
});
a.Connect();
答案 0 :(得分:3)
media only screen and (max-width: 767px) {
.sbi_container{
max-width:400px;
display: block;
}}
和Max
仅发出单个值。如果你有一个非终止源,它们将永远不会发射。
尝试使用此代码作为反例:
MaxBy
答案 1 :(得分:2)
Shlomo将其钉住,因为.MaxBy
无法在非终止序列上生成值。
如果您愿意,可以使用.Scan
创建迄今为止最大值的序列。
你可以这样做:
var a =
Observable
.Interval(TimeSpan.FromSeconds(1))
.Select(x => x % 4L)
.Scan(long.MinValue, (x, y) => x > y ? x : y)
.Publish();
a.Subscribe(o =>
{
Console.WriteLine(o);
});
a.Connect();
我放入.Select(x => x % 4L)
以使序列更有趣。
这给出了:
0 1 2 3 3 3 3 3
如果您希望仅在有新的最大值时生成值,请在.DistinctUntilChanged()
之后添加.Scan
。好又简单。