在F#中,是否可以将记录类型改进为从Web查询中提取的列表?
let customers =
organization.CssSelect("div.Customers")
|> List.map(fun a -> a.InnerText().Trim(), a.AttributeValue("href"))
// [("1 A abcdef Alpha"); ("2 C aabbcc Bravo")]
type Customer = {id:string; loc:string; code:string; name:string}
这样我就可以访问" customers.id"或" customers.name"进一步处理。如果是这样,怎么样?
答案 0 :(得分:1)
如果我理解你的意思,那么就没有内置的魔法,但我认为编写代码再做一次List.map
并创建记录并不值得躲在后面魔法:
type Customer = {id:string; loc:string; code:string; name:string}
let customers =
organization.CssSelect("div.Customers")
|> List.map (fun a -> a.InnerText().Trim(), a.AttributeValue("href"))
|> List.map (fun (id, name) -> { id = id; name = name; code = ""; loc = "" })
如果您使用了一些神奇的技巧来将数据放入记录中,那么您可能会丢失大量的检查(例如,在使用反射时),并且您将失去为记录指定默认值的明确方法此示例中包含loc
和code
等字段。