请考虑以下代码:
let fnOption = Some (fun () -> ())
fnOption = None
它出现以下错误:
init.fsx(2,1):错误FS0001:类型'(unit - > unit)'不支持'equality'约束,因为它是一个函数类型
为什么?我忽视了什么吗?
答案 0 :(得分:2)
目前还不清楚你要做什么。目前,第二行是相等测试,而不是赋值。如果您打算为fnOption
分配一个新值,那么您需要将其变为可变:
let mutable fnOption = Some(fun () -> ())
fnOption <- None
如果你真的试图测试相等性,那么你看到的错误就是预期的结果,因为函数不具有可比性。
答案 1 :(得分:2)
如果你真的想检查是否相等(而不是分配值),那么你可以使用Option.isNone fnOption
。如果你真的想分配,看看kvb的答案。