我读了一本名为Real World Functional Programming with 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:it@20>
我该如何运行此方法?
答案 0 :(得分:3)
当你尝试
时printfn "Result - %A" readAndAdd1
在F#interactive中,你为printfn提供了标识符'readAndAdd1'这是一个函数。 如果你需要打印函数调用的结果,你应该像这样调用这个函数:
printfn "Result - %A" (readAndAdd1())
在这种情况下,F#interactive将等待两个输入并在之后打印结果。 F#交互输出:
> printfn "Result - %A" (readAndAdd1());;
2
3
Result - Some 5
val it : unit = ()
>