function - 在 F# 中调用函数后,如何在 F# 中重复函数?
问题描述
我有一个游戏,您可以在其中执行某些操作,然后在操作完成后,我有一个您可以再次执行的操作列表,但是在程序结束后完成后,我想因为它是一个递归函数,它会继续运行。
这不是我的游戏的一部分,而只是一个演示,该程序要求输入一个字符串,然后完成。它不应该一直要求一个字符串,我怎样才能让它做到这一点?我还尝试回调 f1 函数内的递归函数,但 f1 当然不知道它存在。
open System
let f1 x =
printfn "Hello, %s" x
let rec f2 =
let x = Console.ReadLine()
f1 x
Console.Read() |> ignore
解决方案
如评论中所述,您定义f2
为一个值,而不是一个函数。这已经在 StackOverflow 上讨论过,并且有一个很好的问题和答案涵盖了这一点。
另一个问题是您可能想要调用f2
from f1
(继续循环)以及调用f1
from f2
。为此,您可以使用let rec .. and
语法将函数定义为相互递归:
let rec f1 x =
printfn "Hello, %s" x
f2 ()
and f2 () =
let x = Console.ReadLine()
f1 x
推荐阅读
- java - 如何为作为 Spring Boot 应用程序开发的 rest api 使用 .pem ssl 证书
- python - 使用 azure AAD 身份验证令牌的 Python HTTPS 请求。或 CreateAuthorizationHeader() 的 python 版本
- python - 如何访问图形工具中所有顶点的特征向量中心性?
- excel - 使用 .Find 时收到错误 91“对象变量或未设置块变量”(内容:-
- database - 找到所有可能的最小覆盖
- datetime - UTC 中的日期时间未转换为本地
- javascript - 如何从 AngularJS 中的 JSONP API 获取数据
- excel - 工作表中的特定数据未正确复制到另一个 - 运行时错误 1004
- swift - 在 Mac Catalyst 中使用文档浏览器视图控制器
- python - 检查字典中是否存在键结构