f#从集合中获取值列表

时间:2012-10-30 21:40:48

标签: list collections f#

我正处于学习f#的早期阶段,我已经提出了以下方案。我需要遍历一组电子邮件对象,并为每封电子邮件创建一个CC属性列表。我知道这对f#来说是理想的,但我似乎无法找到解释如何的东西。我认为我的google-fu还不够好,有人能指出我正确的方向吗?

修改

所以基本上我想将1种类型的MailMessage对象映射到不同的类型。第一种类型具有CC字段作为MailAddress对象的ICollection。第二种类型要求CC字段为字符串列表。

2 个答案:

答案 0 :(得分:2)

假设您有Email类型建模为F#记录:

type Email = 
  { Subject: string;
    Body: string; }

和电子邮件列表:

let emails =
  [ {Subject = "Subject 1"; Body = "Body 1"};
    {Subject = "Subject 2"; Body = "Body 2"};
    {Subject = "Subject 3"; Body = "Body 3"}; ]

您可以使用列表模块中的高阶函数来操作emails

let bodies = emails |> List.map (fun e -> e.Body)
// val bodies = ["Body 1"; "Body 2"; "Body 3"]

要开始使用,请查看相关主题的一些MSDN资料:

答案 1 :(得分:0)

这样的东西?

type Email = { Body : string }
// create some emails
let emails = Seq.init 10 (fun i -> { Body = string i })
// get list of bodies
let bodies = emails |> Seq.map (fun { Body = body } -> body) |> Seq.toList