open System
let highLowGame () =
let rng = new Random();
let secretNumber = rng.Next() % 100 + 1
let rec highLowGameStep () =
printfn "Guess a number: "
let guessStr = Console.ReadLine()
let guess = Int32.Parse(guessStr)
match guess with
| _ when guess > secretNumber -> printfn "Too high!" highLowGameStep ()
| _ when guess = secretNumber -> printfn "You got it!" ()
| _ when guess < secretNumber -> printfn "Too low!" highLowGameStep ()
[<EntryPoint>]
let main argv =
highLowGame ()
0 // return an integer exit code
我知道有很多这样的问题,而且我知道 F# 中的函数必须有一个返回变量。我的在这里| _ when guess = secretNumber -> printfn "You got it!" ()
所以我不明白为什么它一直告诉我我的区块尚未完成
此示例直接来自 F# 3.0 书籍。
/stdin(14,13): error FS0010: Unexpected identifier in expression. Expected incomplete structured construct at or before this point or other token.
是完整的错误。
你必须在结束时返回一些东西let
陈述。否则,您的函数只是定义了一些值,但表达式不完整 - 您缺少返回值。有关更多详细信息,请参阅此 MSDN 链接。 https://msdn.microsoft.com/en-us/library/dd233238.aspx#Anchor_2
在这种情况下,您可以添加highLowGameStep ()
最后调用函数并获取其返回值:
open System
let highLowGame () =
let rng = new Random();
let secretNumber = rng.Next() % 100 + 1
let rec highLowGameStep () =
printfn "Guess a number: "
let guessStr = Console.ReadLine()
let guess = Int32.Parse(guessStr)
match guess with
| _ when guess > secretNumber -> printfn "Too high!" highLowGameStep ()
| _ when guess = secretNumber -> printfn "You got it!" ()
| _ when guess < secretNumber -> printfn "Too low!" highLowGameStep ()
highLowGameStep ()
[<EntryPoint>]
let main argv =
highLowGame ()
0 // return an integer exit code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)