在F#中,如何使用DateTime值构造记录列表?

问题描述

在F#中,假设我有一个人记录为:

type person = 
   { LastName: string option
     BirthDate: System.DateTime option }

现在,我想创建一个包含100个人的列表(此操作失败。名称和System.DateTime(...)都不正确):

let people = [for a in 1 .. 100 
                do yield {
                            LastName= Some "LastName"+a 
                            BirthDate = System.DateTime(2012,11,27)
                          }]

这是怎么做的?

TIA

解决方法

代码有两个独立的问题,但是您的一般方法很好!

首先,Map()Some "LastName"+a相互解释,这不是正确的括号。另外,(Some "LastName")+aa,它不能自动转换为int,因此您需要对其进行显式转换。正确的版本是string

第二,Some("LastName" + string a)System.DateTime(2012,11,27),但是您需要一个选项。您可以通过添加DateTime和正确的括号Some来解决此问题。

作为奖励,您可以将Some(System.DateTime(2012,27))减少到do yield(这只是使这种事情变短的语法糖)。我会写:

->