我正在学习RX(Reactive Extensions),我试图使用来自互联网的一些代码示例,源代码在C#中:
var input = Observable.Range(1, 100);
input.Sum().Subscribe(x => Console.WriteLine("The Sum is {0}", x));
由于我没有真正“说出”C#,所以我想用F#做同样的事情。 我下载了RX,并创建了一个F#windows应用程序,添加了对System.Reactive的引用。我的IDE是VS 2010 Ultimate,RX版本是:1.1.11111 这是我的代码:
#light
open System
open System.Collections.Generic
open System.ComponentModel
open System.Linq
open System.Text
open System.Reactive
open System.Reactive.Linq
let input = Observable.Range(1, 100)
let x = input.Sum().Subscribe()
printfn "%A" x
结果应该是5050,因为1到100的总和是5050.但是,我只能看到: System.Reactive.AutoDetachObserver`1 [System.Int32]
请告诉我如何查看5050的结果。 我希望C#代码也适用于F#。如果没有,请让我知道我能做些什么。 谢谢,祝大家新年快乐!
答案 0 :(得分:2)
Subscribe
方法将函数作为其参数(x => foo
是C#中的匿名函数(lambda表达式))。所以你也应该用函数作为参数调用它:
let input = Observable.Range(1, 100)
input.Sum().Subscribe(fun x -> printfn "%A" x)
或者
let input = Observable.Range(1, 100)
input.Sum().Subscribe(printfn "%A")