F # RX Сумма от 1 до 100 примеров кода - PullRequest
0 голосов
/ 29 декабря 2011

Я изучаю 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 #. Если нет, пожалуйста, дайте мне знать, что я могу сделать. Спасибо и с наступающим Новым годом всех вас!

1 Ответ

2 голосов
/ 29 декабря 2011

Метод Subscribe принимает функцию в качестве аргумента (x => foo - анонимная функция (лямбда-выражение) в C #).Поэтому вы должны также вызывать его с функцией в качестве аргумента:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...