containskey返回单位而不是布尔



对我来说很奇怪,以下代码会引发编译时间错误。我不确定为什么containskey返回单元。文档说它返回了布尔。

open System.Collections.Generic    
let mydict = new Dictionary<string,'a>()
if(mydict.ContainsKey "mykey") then
    mydict.["mykey"] = newkey

错误FS0001:此表达式有望具有类型 "布尔",但这里有类型 '单位'

我在这里错过了什么吗?

if是一种表达式,因此两个分支都必须具有相同的类型。如果未指定else分支,则插入unit类型的空的一个。这意味着您的then分支还必须具有unit类型。但是mydict.["mykey"] = newkey具有bool类型。如果要插入mykey的新值,则应使用<-而不是=

if(mydict.ContainsKey "mykey") then
    mydict.["mykey"] <- newkey

最新更新