f# - 很想声明一个空的地图/字典?
问题描述
我想用 Map 初始化一个递归函数。要声明一个带值的只读字典,我们可以这样做:
let dictionary1 = dict [ (1, "a"); (2, "b"); (3, "c") ]
现在,我想创建一个空字典。如何做到这一点?
我正在寻找类似的东西:
let dictionary1 = {} // <- ok this is js
let (stuff, dictionary2) = parseRec("whatever", dictionary1)
解决方案
你可以做:
let dictionary1 = dict []
for elem in dictionary1 do
printfn "Key: %d Value: %s" elem.Key elem.Value
这给了你一个空字典。
该printfn
用法向类型推理引擎揭示了键和值的正确类型。
如果您想明确,则可以通过多种方式指定类型:
let dictionary1 = dict Seq.empty<int * string>
let dictionary1 = dict ([] : (int * string) list)
let dictionary1 = dict [] : System.Collections.Generic.IDictionary<int, string>
let dictionary1 : System.Collections.Generic.IDictionary<int, string> = dict []
推荐阅读
- c++ - 无法翻译 wxWidgets 程序
- html - 在 html.erb 文件中设置 Chart.js 的刻度
- python - Method Not Allowed 请求的 URL 不允许使用该方法。405 错误
- c# - 在统一的 2D c# 中,如何旋转像几何破折号这样的对象?
- arrays - 按指定顺序放置两个 numpy 数组 Numpy Python
- c# - 检测到主窗体已关闭并中止线程
- flutter - 将 ScrollBar 附加到 PageView 的顶部
- swift - 当数组值随 SwiftUI 变化时如何更新视图中的 ForEach
- flutter - 在 Dart/Flutter 中流式传输时出现 StateError(错误状态:元素过多)
- postgresql - Spring Boot + PostgreSQL:找不到创建 Camunda 表的模式