不完整的结构化构造

时间:2017-12-13 22:04:47

标签: asp.net-mvc f#

我是f#的新手,如果有1人可以提供帮助会很棒,近半天解决了这个问题谢谢

module Certificate =
        type T = {
            Id: int
            IsECert: bool
            IsPrintCert: bool
            CertifiedBy: string  
            Categories: Category.T list
}

let createPending now toZonedDateTime toBeCertifiedByName (job: Models.Job.T) (certificateType: Models.CertificateType.T) (pendingCertificate: Models.PendingCertificate.T) visualization  (categories: Category.T list)  = 
            let forCompletion = Models.PendingCertificate.getCertificateForCompletion pendingCertificate
             {
              Id = forCompletion.Id |> CertificateId.toInt
              IsECert = Models.PendingCertificate.isECertificate pendingCertificate
              IsPrintCert = Models.PendingCertificate.isPrintCertificate pendingCertificate
              CertifiedBy = toBeCertifiedByName 
Categories = categories}

我在"错误的结构化构造中得到错误在此点或之前"

1 个答案:

答案 0 :(得分:2)

您的格式全部关闭。我将在此假设这只是发布到StackOverflow的结果,并且您的实际代码已经缩进。

错误来自createPending的定义:此函数没有结果。它的全部内容包括定义forCompletion值,但之后没有任何内容。这是一个更简单的例子,它有同样的问题:

let f x =
   let y = 5

此函数将产生相同的错误,因为它也没有结果。在F#中,每个函数都必须返回某些东西。正文不能只包含辅助函数或值的定义。例如,我可以像这样修复我的破碎函数:

let f x =
   let y = 5
   x + y

此函数首先定义辅助值y,然后将其添加到其参数x,并返回结果。

> f 2
> 7
>
> f 0
> 5

你究竟需要如何修复你的功能取决于你想要它的意思。我在这里无法帮助你,因为你没有提供这些信息。