2014-10-15 5 views
0

Я прочитал книгу под названием Real World Функциональное программирование с F # и C# и есть пример, который идет как этоКак выполнить функцию?

open System 

let readInput() =  
    let s = Console.ReadLine()  
    let (succ, num) = Int32.TryParse(s) 
    if (succ) then 
     Some(num) 
    else   
     None 

let readAndAdd1() =  
    match (readInput()) with 
    | None -> None  
    | Some(n) -> 
     match (readInput()) with  
     | None -> None  
     | Some(m) ->   
      Some(n + m) 

printfn "Result - %A" readAndAdd1 

Он должен спросить вас два числа, а затем добавить их вместе. Но мне кажется, что это не работает. Когда я попробовал это в LinqPad, даже получил ошибку, когда я набрал readInput(). Когда я набрал только readInput, он попросил меня получить первое значение, но не для второго. В F # Interactive он работает, но он печатает Result - <fun:[email protected]>

Как запустить этот метод?

ответ

3

Когда вы пытаетесь

printfn "Result - %A" readAndAdd1 

в F # интерактивными вы обеспечиваете printfn с идентификатором 'readAndAdd1', который является функцией. Если вам нужно распечатать результат вызова функции вы должны вызвать эту функцию следующим образом:

printfn "Result - %A" (readAndAdd1()) 

в этом случае F # интерактивными будут ждать два входа и напечатают результат позже. F # интерактивный выход:

> printfn "Result - %A" (readAndAdd1());; 
2 
3 
Result - Some 5 
val it : unit =() 
> 
Смежные вопросы