微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

F# 匿名记录错误不匹配/意外-Visual Studio 2019

如何解决F# 匿名记录错误不匹配/意外-Visual Studio 2019

您好,我遇到了来自 F# 类的代码的问题。我有带有 F# 和 .NET 包的 VS2019,一切正常,直到出现异常记录。

type Student = {
imie: string;
nazwisko: string;
wiek:int;
rokStudiow:int;

}

  let dane = [
        {imie="Kowalska"; nazwisko="AA"; wiek=21; rokStudiow = 1};
        {imie="Nowak"; nazwisko="BB"; wiek=31;rokStudiow = 2};              // musza byc sredniki
        {imie="Adamski";nazwisko="CC"; wiek=41; rokStudiow = 3};            // kolekcja studentow
        {imie="Kot";nazwisko="DD"; wiek=51; rokStudiow = 2};
        {imie="Konopnicki";nazwisko="EE"; wiek=21; rokStudiow=2}
    ]
    let wynik = List.map (fun o -> { | imie=o.imie;nazwisko=o.nazwisko | }) dane

enter image description here

解决方法

这是一个简单的语法错误。

匿名记录写为 let foo = {| a=1; b="hi" |} 您在花括号和管道之间插入了一个空格。

只需将您的作业更改为

let wynik = List.map (fun o -> {| imie=o.imie;nazwisko=o.nazwisko |}) dane

你应该没事了。

(顺便说一句,您的代码中有很多多余的分号。例如,您可以跳过 type Student 定义中的所有分号 此外,更惯用的 f# 语句是

let wynik = dane |> List.map (fun o -> {| imie=o.imie;nazwisko=o.nazwisko |})

不过这纯粹是风格问题。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。