我是F#新手。此代码有什么问题?
let setCategory (terminal: MerchantTerminal)
terminal.Category <- Nullable(MerchantTerminalCategory.NotSet)
()
编译器告诉我“绑定中出现意外符号'<-'。应为'='或其他标记”
MerchantTerminal是C#类型:
public class MerchantTerminal
{
public MerchantTerminalCategory? Category { get; set; }
}
MerchantTerminalCategory是C#枚举
public enum MerchantTerminalCategory
{
NotSet = 0,
//other values
}
答案 0 :(得分:4)
您在let
定义中缺少等号。它必须在身体之前,例如let x = 5
或let f x = x + 5
。
赞:
let setCategory (terminal: MerchantTerminal) =
terminal.Category <- Nullable(MerchantTerminalCategory.NotSet)
()
答案 1 :(得分:1)
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
您的用法如下所示。您只是在这里错过了=
作业。
let setCategory (terminal: MerchantTerminal) = //you were missing the assignment "=" op here
terminal.Category <- Nullable(MerchantTerminalCategory.NotSet)
()
作为友好的“代码注释”建议,使用像枚举这样的构造的好处之一是避免使用null。如果可能的话,您应该拔出可为空的部分并利用枚举的可用状态来表示默认的“ NotSet”状态,这可能会利用您已有的可用状态或通过新状态。