Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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" }