É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 inttípusra b következtet, míg a fordító a kívánt inttí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.

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.

Lásd még