我是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}
我在"错误的结构化构造中得到错误在此点或之前"
答案 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
你究竟需要如何修复你的功能取决于你想要它的意思。我在这里无法帮助你,因为你没有提供这些信息。