You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019中F#匿名记录未匹配/意外报错问题求助

报错根因

你代码中写的{| imie=o.imie; nazwisko=o.nazwisko |}是F#匿名记录的标准语法,触发语法未匹配类报错的核心原因是 当前项目使用的F#语言版本低于4.6。
匿名记录是F# 4.6版本正式推出的语法特性,VS2019默认新建的F#项目如果没有手动调整配置,通常会绑定较低的F#语言版本,编译器无法识别带竖线分隔的匿名记录结构,就会抛出预期外的语法错误。

可落地的解决操作
  • 调整项目F#语言版本
    在解决方案资源管理器右键对应项目,打开「属性」面板,切换到「生成」设置页,找到「F#语言版本」下拉选项,将默认的旧版本值修改为4.6及以上版本(推荐直接选择latest匹配本地已安装的编译器版本),保存配置后重新编译项目,即可正常识别匿名记录语法。
  • 核对匿名记录书写规范
    调整版本后可对照标准写法校验代码:你写的匿名记录结构本身逻辑没有问题,正确的可编译写法如下:
    let wynik = List.map (fun o -> {| imie = o.imie; nazwisko = o.nazwisko |}) dane
    
    核心注意点是匿名记录的大括号内需配平两侧的竖线|,不要漏写语法标记即可。
  • 低版本兼容替代方案
    如果课程环境要求兼容F# 4.6以下的旧版本,不需要使用匿名记录,直接定义精简的具名记录类型就能实现相同的字段提取效果:
    // 定义只保留姓名字段的精简记录类型
    type BasicStudentInfo = { imie: string; nazwisko: string }
    let wynik = dane |> List.map (fun o -> { imie = o.imie; nazwisko = o.nazwisko })
    

内容的提问来源于stack exchange,提问作者Dominik Ludwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 23:06:02