ContainsKey返回单位而不是bool?

时间:2017-12-05 16:32:01

标签: f#

以下代码抛出编译时错误对我来说很奇怪。我不确定为什么ContainsKey会返回单位。 documentation表示它返回bool。

open System.Collections.Generic    

let mydict = new Dictionary<string,'a>()

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

错误FS0001:此表达式应具有类型       'bool'但这里有类型       '单元'

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:6)

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

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