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

Feo*_*akt 0 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")])
Run Code Online (Sandbox Code Playgroud)

我理解正确,为了向属性集合添加元素,我们应该写

myObject.Property1 <- myObject.Property1.Add (5, "five")
Run Code Online (Sandbox Code Playgroud)

代替

myObject.Property1.Add (5, "five")
Run Code Online (Sandbox Code Playgroud)

?没有更简洁的语法?谢谢.

Mat*_*ton 5

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

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