F#中如何正确初始化嵌套Map(Map内包含Map结构)
F# 嵌套Map初始化报错解决
你的代码触发语法错误的核心原因是:调用Add方法传参时,错误使用冒号:分隔键和值。F#中方法的多个参数、以及Map初始化时的键值对,均使用逗号分隔,冒号仅用于类型标注,编译器遇到参数位置的冒号无法解析,才会连锁抛出意外符号、括号不匹配类的误导性报错。
以下是几种合法的嵌套Map初始化写法:
- 链式调用
Add方法写法
// 逐次Add的写法,键值对之间用逗号分隔 let nestedMap1 = Map.empty .Add("Foo", Map.empty .Add(1, "a") .Add(2, "b") )
- 混合初始化写法:内层用Map列表初始化语法,外层用Add
let nestedMap2 = Map.empty.Add("Foo", Map [ (1, "a"); (2, "b") ])
- 全量列表初始化写法(最简洁,不需要显式写
Map.empty)
let nestedMap3 = Map [ "Foo", Map [ 1, "a" 2, "b" ] ]
补充说明:F#中的Map是不可变集合,每次调用Add方法都会生成一个全新的Map实例,不会修改原始Map对象,因此链式调用Add的写法完全符合设计逻辑。
内容的提问来源于stack exchange,提问作者digitig
相关产品推荐
相关产品推荐

