F#中的记录列表?

Mat*_*hew 4 f# records functional-programming list

你如何使用F#中的记录列表?您如何将其作为函数中的参数传递?我想做这样的事情:

type Car = {
  Color : string;
  Make : string;
  }

let getRedCars cars =
  List.filter (fun x -> x.Color = "red") cars;

let car1 = { Color = "red"; Make = "Toyota"; }
let car2 = { Color = "black"; Make = "Ford"; }
let cars = [ car1; car2; ]
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来告诉我的功能"汽车"是汽车记录列表.

Dan*_*iel 6

你的代码工作得很好.它也可以写成:

let getRedCars cars =
  List.filter (function {Color = "red"} -> true | _ -> false) cars
Run Code Online (Sandbox Code Playgroud)

如果您曾担心推断出错误的签名,则可以添加类型注释.例如:

let getRedCars (cars:Car list) : Car list = //...
Run Code Online (Sandbox Code Playgroud)

  • @StephenSwensen:这对他来说很有用.此外,[组件设计指南(PDF)]的第5.2节(http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/fsharp-component-design-guidelines.pdf)建议使用前缀表示法,有四个例外:`list`,`option`,`array`和`ref`. (2认同)