在F#中将元素添加到集合的繁琐语法

时间:2016-02-19 08:29:01

标签: f#

type myClass(property1 : Map<int, string>) =
    member val Property1 = property1 with get, set

let myObject = myClass(Map.ofList [(1, "one"); (2, "two"); (3, "three")])

我理解正确的是,为了将元素添加到属性集合中,我们应该编写

myObject.Property1 <- myObject.Property1.Add (5, "five")

而不是

myObject.Property1.Add (5, "five")

?没有更简洁的语法?感谢。

1 个答案:

答案 0 :(得分:5)

F#地图是不可变的,因此Add会返回带有附加元素的新Map。因此,如果您将其存储在类的属性中,是的,您必须将新的Map分配给该属性。没有捷径语法,因为mutables不是真正的惯用语F#。

对于这个应用程序,您可能会发现最好打开System.Collections.Generic并使用Dictionary,这是可变的,可能更适合携带内部对象。