【发布时间】:2011-11-27 00:09:45
【问题描述】:
您如何在 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; ]
我需要一种方法来告诉我的函数“汽车”是汽车记录列表。
【问题讨论】:
-
问题不在于
car1和car2声明不是type Car- 所以它不能自动确定类型签名。 -
您的代码运行良好。
getRedCars的推断签名是Car list -> Car list。您看到了什么错误? -
我想它确实有效。似乎 VS 起初认为这是一个错误,但最新编译它可以工作。这也有效(想知道它是否对编译器有帮助?):(fun (x : Visit) -> x.Color = "red") cars
-
我也对其进行了测试,它确实可以正常工作,但我很惊讶
getRedCars正文末尾的单个;是有效的。使用冗长的语法,除了;;用于顶级声明,或 ` in ... ` 用于本地表达式。
标签: list f# functional-programming records