我是f#初学者。
我想创建某种字典,其中适用以下内容:
E.g。考虑以下使用c#库的f#脚本提取,其中两个c#类(学生和教师)继承自公共基础c#class Person:
#r @"D:\Temp\MyCSharpLib.dll"
open MyCSharpLib
let student = Student() // Student inherits from Person
let teacher = Teacher() // Teacher inherits from Person
let eventStream = Map.empty.Add("Key1", student).Add("Key2", teacher)
我试图使用Map来执行此操作,但由于编译器期望所有值都是Student类型,因此出现错误。
有没有办法在f#中执行此操作?
答案 0 :(得分:4)
事实上,在这种情况下,F#无法猜测初始地图中您实际上想要的是Map<string, Person>
而不是Map<string, Student>
。您可以明确指出:
let eventStream = Map.empty<_,Person>.Add("Key1", student).Add("Key2", teacher)