【问题标题】:How can I make a Map[string, obj] in F#?如何在 F# 中制作 Map[string, obj]?
【发布时间】:2019-11-19 19:22:52
【问题描述】:

我正在尝试制作一个不可变的地图

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

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

所以我尝试了一些丑陋的东西:

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

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

有没有更好的解决方案让编译器自动装箱?

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

【问题讨论】:

    标签: f#


    【解决方案1】:

    这个问题已经有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')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-17
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      相关资源
      最近更新 更多