gpt4 book ai didi

f# - 如何在 F# 中使用 Observable.Zip

转载 作者:行者123 更新时间:2023-12-05 01:36:03 27 4
gpt4 key购买 nike

这是我的C#代码

Observable.Zip(ob1, ob2, (a, b) => a + b);

我正在尝试使用 Pipe-Forwarding 运算符将其转换为 F#

ob1 |> Observable.Zip(ob2, Func<_,_,_> (fun a b -> a + b))

它不会编译,因为它无法获取我正在尝试使用的重载。

有什么线索吗?

以下工作正常,我只是好奇我是否可以让管道转发运算符(operator)在这里工作。从技术上讲,它应该将左侧的 ob1 作为第一个参数,并将提供的两个参数作为右侧的第二个和第三个参数?

 Observable.Zip (ob1,ob2 ,Func<_,_,_>(fun a b -> a + b))

最佳答案

如评论中所述,您可以像这样实现一个简单的包装器:

    open System.Reactive.Linq

let zipWith (f : 'T -> 'U -> 'R)
(second: IObservable<'U>)
(first: IObservable<'T>)
: IObservable<'R> =
Observable.Zip(first, second, f)

然后按照你的意愿去做:

ob1 |> zipWith (fun a b -> a+b) ob2

PS:如果你这样做看起来会更好:

ob1 |> zipWith (+) ob2

关于f# - 如何在 F# 中使用 Observable.Zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417312/

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