【问题标题】:Incomplete structured construct结构不完整
【发布时间】:2017-12-13 22:04:46
【问题描述】:

我是f#的新手,如果有人能帮上忙就太好了,解决这个问题将近半天了谢谢

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}

我在“此时或之前的结构结构不完整”中出现错误

【问题讨论】:

  • 为了帮助理解这种情况,您能否添加一个简短描述,说明您使用代码 sn-p 尝试完成的工作以及完整的错误?

标签: asp.net-mvc f#


【解决方案1】:

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

错误来自createPending的定义:这个函数没有结果。它的所有主体都包含定义一个forCompletion 值,但在它之后没有任何内容。这是一个具有相同问题的更简单示例:

let f x =
   let y = 5

这个函数会产生同样的错误,因为它也没有结果。在 F# 中,每个函数都必须返回 something。主体不能只包含辅助函数或值的定义。例如,我可以像这样修复上面损坏的函数:

let f x =
   let y = 5
   x + y

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

> f 2
> 7
>
> f 0
> 5

您需要如何修复您的功能取决于您想要它的确切含义。我在这里帮不了你,因为你没有提供这些信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2015-02-06
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2013-07-19
    相关资源
    最近更新 更多