MerchantTerminalCategory

MerchantTerminalCategory

我是F#新手。此代码有什么问题?

let setCategory (terminal: MerchantTerminal)
    terminal.Category <- Nullable(MerchantTerminalCategory.NotSet)
    ()

编译器告诉我“绑定(bind)中出现意外符号'
MerchantTerminal是C#类型:
public class MerchantTerminal
{
    public MerchantTerminalCategory? Category { get; set; }
}

MerchantTerminalCategory是C#枚举
public enum MerchantTerminalCategory
{
    NotSet = 0,
    //other values
}

最佳答案

粗略的Fsharp等效于您的C#代码:

type MerchantTerminalCategory = NotSet=0 | Set=1

type MerchantTerminal() =
    let mutable category =
        new System.Nullable<MerchantTerminalCategory>()
    member this.Category
        with get() = category
        and set(value) = category <- value
每个问题的用法:
您的用法如下所示。您仅在此处缺少作业= op。
let setCategory (terminal: MerchantTerminal) = //you were missing the assignment "=" op here
    terminal.Category <- Nullable(MerchantTerminalCategory.NotSet)
    ()
附加评论
作为友好的“代码注释”建议,使用类似枚举的构造的好处之一是避免使用null。如果可能的话,您应该拔出可为空的部分,并利用枚举的可用状态来表示默认的“NotSet”状态,这可能会利用现有的可用状态或通过新状态。

08-05 04:40