在F#中阅读地图的好材料

时间:2019-01-03 00:21:28

标签: f#

请帮助进行以下练习: enter image description here

我可以阅读哪些好资料,以了解如何在F#中使用Map?

我试图了解如何使用地图。

我尝试过:

let holidays =
    Map.empty.
        Add("Christmas", "Dec. 25");;

先奏效,然后我尝试:

let holidays =
    Map.empty.
        Add("Christmas", "Dec. 25")
        Add("Halloween", "Oct. 31");;

它给出了一个错误

我必须在第一个Add语句之后加上一个点:

let holidays =
    Map.empty.
        Add("Christmas", "Dec. 25").
        Add("Halloween", "Oct. 31");;

我想知道为什么会这样。

那么那就意味着

let holidays =
    Map.empty;;

是我们创建新地图的方式。但是我想要一个Map类型的地图(团队,积分)。 所以我尝试了:

let exmaple =
    Map.empty.
        Add ("Superman", Points 8);;
val exmaple : Map<string,Points> = map [("Superman", Points 8)]

但这是map(字符串,点)类型,而不是map(Team,点)类型。

此外,如何在stackoverflow上的map之后写“ <”,以便出现跟随“ <”的东西(这就是为什么我使用map()而不是map <>的原因)?

请帮助。

1 个答案:

答案 0 :(得分:4)

创建空Map<Team,Points>的三种方法是:

let holidays : Map<Team, Points> = Map.empty
let holidays'                    = Map.empty : Map<Team, Points>  // this also works
let holidays''                   = Map.empty // even this works if followed by usage

您可以使用.Add(t, p)Map.add t p添加元素:

let twoAdded  = holidays       .Add("Superman", Points 6)       .Add("Batman", Points 5)
let twoAdded' = holidays |> Map.add "Superman" (Points 6) |> Map.add "Batman" (Points 5)

第二种方法是功能方法。

您的类型Teamstring是相同的,因为:

type Team = string

只是别名,不是新类型。