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