Megosztás:


É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öveg, 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 azt jelenti, hogy egy nevet társít egy definícióhoz. A let kulcsszó az alábbi példákhoz hasonlóan egy értéket köt össze:

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 következtet. Egy primitív típus, például egy integrál vagy lebegőpontos szám esetében a típus a literál típusából lesz meghatározva. Ezért az előző példában a fordító a kívánt 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ének visszatérési értéke 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 a program végrehajtása során nem módosíthatók. Ha olyan nyelvekhez van használatban, mint a C++, a Visual Basic vagy a C#, meglepő lehet, hogy az F# a program végrehajtása során új értékekhez rendelhető változók helyett a nem módosítható értékeket helyezi előtérbe. A nem módosítható adatok a funkcionális programozás fontos elemei. Többszálas környezetben nehéz kezelni a megosztott változókat, amelyeket számos különböző szál módosíthat. Változók esetén néha nehéz megállapítani, hogy egy változó megváltozhat-e egy másik függvénynek való átadáskor.

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 megváltoztathatatlan függvény és kimenetként eltérő megváltoztathatatlan é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 ajánlott eljárás, mert így a kód a funkcionális programozás fontos aspektusából profitálhat.

Változók változói

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, akár típusmezőként, akár 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 kezdeti értékeket ugyanúgy rendelheti hozzá egy változóhoz, hogy a let kulcsszót ugyanúgy használja, mint egy értéket. A különbség azonban az, hogy később új értékeket rendelhet a változókhoz az <- operátor használatával, 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ásokat létrehozó űrlapokat is, például seq az építőket. Ha értesítést szeretne kapni erről, engedélyezze a 3180-at 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óval a neveket értékekhez és függvényekhez köti.
Funkciók Áttekintést nyújt az F#-függvényekről.

Lásd még