我處於學習f#的最初階段,並且已經提出了以下場景。我需要遍歷一組電子郵件對象併爲每封電子郵件創建一個CC屬性列表。我知道這是f#的理想選擇,但我似乎無法找到任何解釋如何的東西。我認爲我的google-fu只是不夠好,有人能指出我的方向嗎?f#從集合中獲取值列表
編輯
所以基本上我想1種MAILMESSAGE類型對象的映射到不同的類型。第一種類型具有CC字段作爲MailAddress對象的ICollection。第二種類型要求CC字段是字符串列表。
我處於學習f#的最初階段,並且已經提出了以下場景。我需要遍歷一組電子郵件對象併爲每封電子郵件創建一個CC屬性列表。我知道這是f#的理想選擇,但我似乎無法找到任何解釋如何的東西。我認爲我的google-fu只是不夠好,有人能指出我的方向嗎?f#從集合中獲取值列表
編輯
所以基本上我想1種MAILMESSAGE類型對象的映射到不同的類型。第一種類型具有CC字段作爲MailAddress對象的ICollection。第二種類型要求CC字段是字符串列表。
像這樣?
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
假設你有一個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材料上相關主題:
謝謝,當我意識到發生了什麼事情時,兩個答案都結合在一起給了我一個小小的尤里卡時刻!正如丹尼爾所建議的,我需要使用Seq.map作爲ICollection。慢慢到達那裏:) – shmish111
你能提供一個樣本輸入和輸出?目前還不清楚你想達到什麼目的。 – pad