dictionary - F# 基础 : Map of Maps?

标签 dictionary f#

我的教授给了我们类解决问题的提示,并建议我们首先使用以下方法为类(class)建模:

let students = Map.add 1 Map.empty Map.empty

世界从一个学生开始(由他们的 ID 表示,例如 1),每个学生都有许多类(class) ID,每个类(class) ID 都有与其关联的等级(A+、F 等)。

我无法理解这段代码的实际含义,我只理解一张 map 。例如

let student = Map.add 43 "A+" 

如何向提议的版本实际添加一个新的“学生”或“classID/等级”并返回一个新的 map ?

作为后续行动,我将如何访问/迭代这样的 map 上的元素? 谢谢,这里的函数式编程初学者真的很挣扎。

最佳答案

let grades = Map.empty<string,string>
let students = Map.empty<int,Map<string,string>>
let students = students.Add(1,grades.Add("class1","A").Add("class2","B"))
let students = students.Add(2,grades.Add("class3","A").Add("class4","C"))

您可以通过在 map 中建立索引来访问该值: students.[1]将返回 val it : Map<string,string> = map [("class1", "A"); ("class2", "B")]

其他两条评论:1) 通常您会首先构建某种数据结构,例如元组列表,然后从那里构建 map 。

let classes = [("class1","A");("class2","B")]
classes |> Map.ofList

2) 您可以通过 Map.iter 或 Map.map 遍历 map :

let classes' = classes |> Map.ofList

并防止成绩膨胀:-)

classes' |> Map.map (fun key value -> (key,value+"-"))

请看:https://en.wikibooks.org/wiki/F_Sharp_Programming/Sets_and_Mapshttps://msdn.microsoft.com/en-us/library/ee353880.aspx

关于dictionary - F# 基础 : Map of Maps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36562519/

相关文章:

arrays - 如何在 F# 中生成动态类型的数组

c# - 使用 C# 计算 Lat Long 是否在一个国家/地区内

python - 使用元组作为字典键

f# - 为什么这个 F# 表达式堆栈溢出

unit-testing - 如何在 f# 中为模式匹配创建 fsunit 测试?

F# 将带参数的运算符传递给函数

asynchronous - F# Async.FromBeginEnd 不捕获异常

objective-c - Cocoa 中的双向映射

dictionary - pyspark 中的累加器,字典作为全局变量

ios - 数组映射,Swift