我是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”状态,这可能会利用现有的可用状态或通过新状态。