F# - 将记录改进为Html查询列表

时间:2017-10-06 07:25:42

标签: types f#

在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"进一步处理。如果是这样,怎么样?

1 个答案:

答案 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 = "" })

如果您使用了一些神奇的技巧来将数据放入记录中,那么您可能会丢失大量的检查(例如,在使用反射时),并且您将失去为记录指定默认值的明确方法此示例中包含loccode等字段。