以下代码抛出编译时错误对我来说很奇怪。我不确定为什么ContainsKey会返回单位。 documentation表示它返回bool。
open System.Collections.Generic
let mydict = new Dictionary<string,'a>()
if(mydict.ContainsKey "mykey") then
mydict.["mykey"] = newkey
错误FS0001:此表达式应具有类型 'bool'但这里有类型 '单元'
我在这里错过了什么吗?
答案 0 :(得分:6)
if
是一个表达式,因此两个分支必须具有相同的类型。如果未指定else
分支,则插入类型为unit
的空分支。这意味着您的then
分支也必须具有unit
类型。但是mydict.["mykey"] = newkey
的类型为bool
。如果您要为mykey
插入新值,则应使用<-
代替=
:
if(mydict.ContainsKey "mykey") then
mydict.["mykey"] <- newkey