对我来说很奇怪,以下代码会引发编译时间错误。我不确定为什么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