FS0005: Ez a mező nem módosítható

Ez az üzenet akkor jelenik meg, ha egy rekordmező nem módosítható, de a rekordmező nincs megjelölve.

A következő kódban a rendszer deklarál egy nem módosítható mezőket tartalmazó rekordot, létrehoz egy példányt, és a rekord egy mezőjét a rendszer megváltoztathatatlanul hozzárendeli, és megjeleníti a hibát:

type Food =  { Kind: string
               DaysOld: int }

let apple = { Kind = "apple"
              DaysOld = 10 }

apple.Kind <- "orange"

Ez a kód a következő kimenetet eredményezi:

error FS0005: This field is not mutable

Itt a nem módosítható rekord mezőhöz Kind a "narancssárga" sztringérték lett hozzárendelve, de az F# csak akkor támogatja a módosítható hozzárendelést, ha a mező explicit módon van megjelölve.

Az üzenet megoldásához módosítania kell a mező definiálásának módját, vagy az új érték beállításának módját.

Ha valójában azt szeretné, hogy a rekordnak legyen egy mutable mezője (ami meglehetősen ritka gyakorlat), akkor a mezőt mutable a típusdefinícióban szereplő módon jelölheti meg, az itt látható módon:

type Food =  { mutable Kind: string
               DaysOld: int }

let apple = { Kind = "apple"
              DaysOld = 10 }

apple.Kind <- "orange"

Az F#-ban azonban idiomatikusabb egy rekord módosítható frissítése a with kifejezésen keresztül, amely létrehozza az eredeti rekord másolatát az itt látható új értékekre beállított mezőkkel:

type Food =  { Kind: string
               DaysOld: int }

let apple = { Kind = "apple"
              DaysOld = 10 }

let orange = { apple with Kind = "orange" }