“let 未完成。需要一个表达式”错误。但我不知道在哪里

2023-12-22

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(使用前将#替换为@)

“let 未完成。需要一个表达式”错误。但我不知道在哪里 的相关文章

随机推荐

  • 串口获取数据失败

    我正在使用串行端口进行锻炼 我已将此代码插入到我的程序中 我能够向设备发送数据 但无法从设备读取数据 在调试模式下 我只能得到serialport BytesToRead 0 我可以知道为什么会发生这种情况吗 while serialpor
  • 让 jQuery 等待 $.post 完成页面更新

    我正在调用一个函数来使用 jQuery post 刷新当前页面的一部分 然后在该函数完成后 我需要执行另一个函数来更新该页面上的 Google 地图 使用从 邮政 我无法嵌套这些函数 因为 DoGoogleMap 无法在 RefreshSu
  • 点与线之间最近的曼哈顿距离

    我想找到图像中绘制的线段上最小的点曼哈顿距离 http xlinux nist gov dads HTML manhattanDistance html从给定点 显而易见的方法是获取线段上的像素 并为每个像素计算距离以获得最小值 但我们能做
  • Python 是否优化循环中的函数调用?

    假设我有一段代码 它从循环中调用某个函数数百万次 并且我希望代码能够快速运行 def outer function file for line in file inner function line def inner function l
  • Fancybox:未传递数组变量

    只是似乎无法让这种情况发生 fancy click function event event preventDefault var pic room thumbnail each function index pic push http l
  • 将非标准 CSV 文件读入 R

    我正在尝试将以下 csv 文件读入 R http asic gov au Reports YTD 2015 RR20150511 001 SSDailyYTD csv http asic gov au Reports YTD 2015 RR
  • Django admin list_filter自定义字段错误

    我为用户扩展了额外的选项 例如部门 但是当我尝试在管理面板上为部门添加过滤器时 它抛出这个错误 错误 admin E116 list filter 0 的值引用的是 department 它不引用 Field 参考它的外观 https do
  • 如何从 mysql 表中删除 auto_increment

    这应该是一个非常简单的问题 但我找不到有效的解决方案 我将日期从Oracle迁移到MYSQL 在此过程中 所有主键都设置为auto increment 然而 有很多确定的关系 父级PK与子级相同 所以正确的事务处理方法是插入到父表中 得到r
  • 尝试在异步函数内使用 bcrypt 对密码进行哈希处理

    继从这个问题 https stackoverflow com questions 48799479 async function in mongoose pre save hook not working noredirect 1 comm
  • Java 8 的新 Java Date Time API 是否负责 DST?

    我正在考虑使用新的java 8 日期时间 API 我用 google 搜索了一下 发现 jodaTime 对于 java 来说是不错的选择 但仍然对这个新 API 的工作原理感兴趣 我将所有时间以 UTC 值存储在我的数据存储中 并将根据用
  • 二值图像方向

    我试图找到二值图像的方向 其中方向定义为最小惯性矩的轴 即面积的最小二阶矩 我正在使用霍恩博士关于机器人视觉的书 麻省理工学院 可以在这里找到 http people csail mit edu bkph courses papers Ro
  • 如何在java中获取所有网络接口并将信息存储在Java Map中

    我是 Java 编程新手 我需要一种方法来使用 java 获取 Linux 中的所有网络接口并将该信息存储在 Java 中Map 我在谷歌中找到了很多如何以静态方式做到这一点的方法 只是如何获得eth0并显示信息 我的代码需要可移植 代码必
  • 如何检测windows下是否安装了某个软件?

    我是编程新手 我获得了一个虚拟会议站点 现在我需要修改网站 当用户登录到会议站点时 它必须检测他的系统中是否安装了特定的软件 该软件用于进行视频通话 它使用ActiveX对象 检测系统中是否存在已安装软件的最佳方法是什么 坦白说 我什至不知
  • 从 Google 的 dataproc 读取 S3 数据

    我正在我创建的集群上通过 Google 的 dataproc 运行 pyspark 应用程序 在一个阶段 应用程序需要访问 Amazon S3 目录中的目录 在那个阶段 我收到错误 AWS 访问密钥 ID 和秘密访问密钥必须指定为 s3 U
  • PHP 中的混合引号

    我有这个脚本可以从数据库获取我的信息 result mysqli query con SELECT FROM table WHERE id 3 while row mysqli fetch array result echo p row n
  • 在xpath中为什么我可以使用大于符号>但不能使用小于符号<

    使用 c 3 编译的转换以下内容似乎工作得很好
  • 插入 int 时不支持参数

    我尝试在 SQLite3 中存储日期和时间 以便稍后使用比较来检索记录 例如SELECT WHERE date1 lt date2 我放弃了存储的尝试datetime datetime对象并决定使用 UNIX 时间戳来代替 因为它们只是一个
  • 使用命令提示符启动后台 java

    我使用以下命令运行 jetty 服务器 服务器启动 并且与服务器启动相关的消息显示在命令提示符中 java jar start jar 我想要的是 我想在后台启动jetty服务器 即服务器应该启动并且命令提示符中不应显示任何消息 因此我尝试
  • 非常简单的 WPF 表单数据验证 - 如何进行?

    我有一个非常简单的课程 我们称之为 客户 它看起来像这样 namespace TestValidation class Customer private string name public string Name get return n
  • “let 未完成。需要一个表达式”错误。但我不知道在哪里

    open System let highLowGame let rng new Random let secretNumber rng Next 100 1 let rec highLowGameStep printfn Guess a n