问题描述
您好,我遇到了来自 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
解决方法
这是一个简单的语法错误。
匿名记录写为
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 |})
不过这纯粹是风格问题。)