Értékek
Az F#-ban megadott értékek adott típusú mennyiségek; az értékek lehetnek integrál- vagy lebegőpontos számok, karakterek vagy szövegek, listák, sorozatok, tömbök, rekordok, diszkriminált egyesítések, rekordok, osztálytípusok vagy függvényértékek.
Érték kötése
A kötés kifejezés egy név definícióhoz való társítását jelenti. A let
kulcsszó az alábbi példákhoz hasonlóan köt egy értéket:
let a = 1
let b = 100u
let str = "text"
// A function value binding.
let f x = x + 1
Az érték típusa a definícióból származik. Primitív típus, például egész vagy lebegőpontos szám esetén a típus a literál típusából van meghatározva. Ezért az előző példában a fordító a leendő unsigned int
típusra b
következtet, míg a fordító a kívánt int
típusra a
következtet. A függvényérték típusát a függvény törzsében található visszatérési érték határozza meg. A függvény értéktípusairól további információt a Függvények című témakörben talál. A literáltípusokról további információt a Literálok című témakörben talál.
A fordító alapértelmezés szerint nem ad ki diagnosztikát a nem használt kötésekkel kapcsolatban. Az üzenetek fogadásához engedélyezze az 1182-s figyelmeztetést a projektfájlban vagy a fordító meghívásakor (lásd --warnon
a Fordító beállításai területen).
Miért nem módosítható?
A nem módosítható értékek olyan értékek, amelyek nem módosíthatók a program végrehajtása során. Ha olyan nyelveket használ, mint a C++, a Visual Basic vagy a C#, meglepőnek találhatja, hogy az F# a nem módosítható értékeket helyezi előtérbe, nem pedig olyan változókat, amelyek új értékeket rendelhetnek hozzá egy program végrehajtása során. A nem módosítható adatok a funkcionális programozás fontos elemei. Többszálú környezetben nehéz kezelni a sok különböző szál által módosítható megosztott változókat. Emellett változók esetén néha nehéz megállapítani, hogy egy változó megváltozhat-e, amikor átadják egy másik függvénynek.
A tiszta funkcionális nyelvekben nincsenek változók, és a függvények szigorúan matematikai függvényként viselkednek. Ha egy eljárásnyelv kódja változó-hozzárendeléssel módosít egy értéket, a funkcionális nyelv megfelelő kódja nem módosítható értékkel rendelkezik, amely a bemenet, egy nem módosítható függvény és kimenetként különböző nem módosítható értékek. Ez a matematikai szigorúság lehetővé teszi a program viselkedésével kapcsolatos szigorúbb érvelést. Ez a szigorúbb érvelés teszi lehetővé a fordítók számára a kód szigorúbb ellenőrzését és hatékonyabb optimalizálását, és megkönnyíti a fejlesztők számára a megfelelő kód megértését és írását. A funkcionális kód ezért valószínűleg könnyebb hibakeresést végezni, mint a szokásos eljárási kód.
Az F# nem tiszta funkcionális nyelv, mégis teljes mértékben támogatja a funkcionális programozást. A nem módosítható értékek használata jó gyakorlat, mivel így a kód a funkcionális programozás egy fontos aspektusát használhatja.
Módosítható változók
A kulcsszóval mutable
megadhat egy módosítható változót. Az F# változóinak általában korlátozott hatókörrel kell rendelkezniük, egy típus mezőjeként vagy helyi értékként. A korlátozott hatókörű változók könnyebben szabályozhatók, és kevésbé valószínű, hogy helytelen módon módosulnak.
A kulcsszóval let
ugyanúgy rendelhet hozzá kezdeti értéket egy változóhoz, mint egy értéket. A különbség azonban az, hogy később az operátorral <-
új értékeket rendelhet a változókhoz, ahogyan az alábbi példában is látható.
let mutable x = 1
x <- x + 1
A megjelölt mutable
értékek automatikusan előléptethetők 'a ref
, ha egy lezárás rögzíti őket, beleértve a lezárást létrehozó űrlapokat, például seq
az építőket. Ha értesítést szeretne kapni erről, engedélyezze a 3180-es figyelmeztetést a projektfájlban vagy a fordító meghívásakor.
Kapcsolódó témakörök
Cím | Leírás |
---|---|
kötések használata | Információt nyújt arról, hogy a let kulcsszó használatával a neveket értékekhez és függvényekhez köti. |
Functions | Áttekintést nyújt az F#-függvényekről. |