如何基于现有的C#片段在F#中创建可观察的函数?

时间:2012-12-06 14:29:32

标签: c# f# reactive-programming c#-to-f#

我正在尝试将以下代码转换为F#:

static void Main(string[] args)
{
    var y = Observable.Create<int>(x =>
        {
            x.OnNext(5);
            return (() => { });
        });

    y.Subscribe(x => Console.WriteLine(x));
}

尝试了以下内容:

let ob = Observable.Create<int>(fun x -> 
                                    x.OnNext(5)
                                    fun unit -> unit)  

但没有成功。我该怎么办?

2 个答案:

答案 0 :(得分:6)

let observable = Observable.Create(fun (x: IObserver<_>) ->
  x.OnNext(5)
  Action(ignore))

observable.Subscribe(printfn "%d") |> ignore

答案 1 :(得分:6)

如果您的Observable无法取消(通常是同步时),使用单身Disposable.Empty

会更有效率
Observable.Create(fun (o : IObserver<_>) -> 
    o.OnNext(5)
    Disposable.Empty
)