作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的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/
我是一名优秀的程序员,十分优秀!