Function 在F#中调用函数后,如何在F#中重复函数?
我有一个游戏,你可以做某些动作,然后在动作完成后,我有一个你可以再做的动作列表,但在程序结束后,我想,因为这是一个递归函数,它会继续运行 这不是我游戏的一部分,只是一个演示,这个程序在完成后要求输入一个字符串。它不应该一直要一根绳子吗?我怎么能让它这么做?我还尝试调用f1函数中的递归函数,但f1当然不知道它存在Function 在F#中调用函数后,如何在F#中重复函数?,function,recursion,f#,Function,Recursion,F#,我有一个游戏,你可以做某些动作,然后在动作完成后,我有一个你可以再做的动作列表,但在程序结束后,我想,因为这是一个递归函数,它会继续运行 这不是我游戏的一部分,只是一个演示,这个程序在完成后要求输入一个字符串。它不应该一直要一根绳子吗?我怎么能让它这么做?我还尝试调用f1函数中的递归函数,但f1当然不知道它存在 open System let f1 x = printfn "Hello, %s" x let rec f2 = let x = Console.ReadLine(
open System
let f1 x =
printfn "Hello, %s" x
let rec f2 =
let x = Console.ReadLine()
f1 x
Console.Read() |> ignore
如注释中所述,您将
f2
定义为一个值,而不是一个函数。这已经在StackOverflow上讨论过了,有一个
另一个问题是,您可能希望从f1
调用f2
(以继续循环)以及从f2
调用f1
。为此,可以使用let rec.将函数定义为相互递归函数。。和
语法:
let rec f1 x =
printfn "Hello, %s" x
f2 ()
and f2 () =
let x = Console.ReadLine()
f1 x
在你的代码中,f2不是一个函数,它是一个值。@PetSerAl我如何使它成为一个函数?我看不出有什么区别。谢谢你的解释,但是你提供的代码没有重复要求字符串。编辑:是的,我只是在之后打电话给它P