Wie deklarieren Sie die Werte eines Wörterbucheintrags als veränderlich?

Google bietet zahlreiche Beispiele für das Hinzufügen und Löschen von Einträgen in einem F # -Wörterbuch (oder einer anderen Sammlung). Aber ich sehe keine Beispiele in der Größenordnung von

myDict["Key"] = MyValue;

ich habe es versucht

myDict.["Key"] <- MyValue

Ich habe auch versucht, das Wörterbuch als zu deklarieren

Dictionary<string, mutable string>

sowie mehrere Varianten dazu. Allerdings habe ich noch nicht die richtige Kombination getroffen ... wenn jaist eigentlich in F # möglich.

Bearbeiten: Der Code für den Verstoß lautet:

type Config(?fileName : string) =
    let fileName = defaultArg fileName @"C:\path\myConfigs.ini"

    static let settings =
        dict[ "Setting1", "1";
              "Setting2", "2";
              "Debug",    "0";
              "State",    "Disarray";]

    let settingRegex = new Regex(@"\s*(?<key>([^;#=]*[^;#= ]))\s*=\s*(?<value>([^;#]*[^;# ]))")

    do  File.ReadAllLines(fileName)
        |> Seq.map(fun line -> settingRegex.Match(line))
        |> Seq.filter(fun mtch -> mtch.Success)
        |> Seq.iter(fun mtch -> settings.[mtch.Groups.Item("key").Value] <- mtch.Groups.Item("value").Value)

Der Fehler, den ich erhalte, ist:

System.NotSupportedException: This value may not be mutated
   at [email protected]_Item(K key, V value)
   at <StartupCode$FSI_0036>[email protected](Match mtch)
   at Microsoft.FSharp.Collections.SeqModule.iter[T](FastFunc`2 action, IEnumerable`1 sequence)
   at FSI_0036.Utilities.Config..ctor(Option`1 fileName)
   at <StartupCode$FSI_0041>.$FSI_0041.main@()
stopped due to error

Antworten auf die Frage(2)

Ihre Antwort auf die Frage