如何在F#中制作Map [string,obj]?

时间:2019-11-19 19:22:52

标签: f#

我正在尝试制作

的不变图

在C#中,我可以将字典变成只读字典,实现相同的目的。

但是看起来,在F#中,第一个元素决定了地图其余部分的类型。

所以我尝试了一些丑陋的事情:

Map [
    "key1", value1 |> obj
    "key2", value2 |> obj

Map [
    "key1", box value1
    "key2", box value2

有没有更好的解决方案,编译器会自动将项目装箱?

我要解决的问题是与期待字典的外部C#库进行对话,而我正在尝试了解F#编译器是否可以执行此类操作。

1 个答案:

答案 0 :(得分:0)

这个问题已经有an answer,尽管是Dictionary<_,obj>而不是Map<_,obj>

let (=>) k v = k, box v
// val ( => ) : k:'a -> v:'b -> 'a * obj

Map [ "key1" => 1; "key2" => 'a' ]
// val it : Map<string,obj> = map [("key1", 1); ("key2", 'a')]