Sdílet prostřednictvím


Hodnoty

Hodnoty v jazyce F# jsou množství, která mají určitý typ; Hodnoty mohou být integrální nebo čísla s plovoucí desetinou čárkou, znaky nebo text, seznamy, sekvence, matice, řazené kolekce členů, diskriminované sjednocení, záznamy, typy tříd nebo hodnoty funkcí.

Vytvoření vazby hodnoty

Vazba termínu znamená přidružení názvu k definici. Klíčové let slovo sváže hodnotu, jak je znázorněno v následujících příkladech:

let a = 1
let b = 100u
let str = "text"

// A function value binding.

let f x = x + 1

Typ hodnoty je odvozen z definice. Pro primitivní typ, například celočíselné číslo nebo číslo s plovoucí desetinou čárkou, je typ určen z typu literálu. V předchozím příkladu tedy kompilátor odvodí typ b , který má být unsigned int, zatímco kompilátor odvodí typ a , který má být int. Typ hodnoty funkce je určen z návratové hodnoty v těle funkce. Další informace o typech hodnot funkcí najdete v tématu Funkce. Další informace o typech literálů naleznete v tématu Literály.

Kompilátor ve výchozím nastavení nevystavuje diagnostiku nepoužívaných vazeb. Pokud chcete tyto zprávy přijmout, povolte v souboru projektu upozornění 1182 nebo při vyvolání kompilátoru (viz --warnon v části Možnosti kompilátoru).

Proč neměnný?

Neměnné hodnoty jsou hodnoty, které nelze změnit v průběhu provádění programu. Pokud jste zvyklí na jazyky, jako je C++, Visual Basic nebo C#, může vás překvapit, že jazyk F# umísťuje přednost před neměnnými hodnotami místo proměnných, které je možné při provádění programu přiřadit nové hodnoty. Neměnná data jsou důležitým prvkem funkčního programování. V prostředí s více vlákny je obtížné spravovat sdílené proměnlivé proměnné, které je možné změnit mnoha různými vlákny. U proměnlivých proměnných může být někdy obtížné zjistit, jestli se proměnná může při předání do jiné funkce změnit.

V čistě funkčních jazycích neexistují žádné proměnné a funkce se chovají přísně jako matematické funkce. Pokud kód v procedurálním jazyce používá k změně hodnoty přiřazení proměnné, má ekvivalentní kód v funkčním jazyce neměnnou hodnotu, která je vstup, neměnná funkce a různé neměnné hodnoty jako výstup. Tato matematická striktnost umožňuje přísnější uvažování o chování programu. Toto přísnější odůvodnění je to, co umožňuje kompilátorům kontrolovat kód přísnějším způsobem a efektivněji optimalizovat a usnadňuje vývojářům pochopení a psaní správného kódu. Funkční kód je proto pravděpodobně jednodušší ladit než běžný procedurální kód.

Jazyk F# není čistě funkční jazyk, ale plně podporuje funkční programování. Použití neměnných hodnot je dobrým postupem, protože to umožňuje kódu těžit z důležitého aspektu funkčního programování.

Proměnlivé proměnné

Klíčové slovo mutable můžete použít k určení proměnné, kterou lze změnit. Proměnlivé proměnné v jazyce F# by obecně měly mít omezený rozsah, a to buď jako pole typu, nebo jako místní hodnota. Proměnlivé proměnné s omezeným oborem jsou jednodušší a méně pravděpodobné, že budou změněny nesprávnými způsoby.

Počáteční hodnotu můžete přiřadit proměnlivé proměnné pomocí klíčového let slova stejným způsobem, jako byste definovali hodnotu. Rozdíl je ale v tom, že pomocí operátoru <- můžete následně přiřadit nové hodnoty proměnlivým proměnným, jako v následujícím příkladu.

let mutable x = 1
x <- x + 1

Hodnoty označené mutable mohou být automaticky povýšeny na 'a ref v případě zachycení uzavření, včetně formulářů, které vytvářejí uzavření, jako seq jsou tvůrci. Pokud chcete být upozorněni, když k tomu dojde, povolte v souboru projektu upozornění 3180 nebo při vyvolání kompilátoru.

Titulek Popis
vazby let Poskytuje informace o použití klíčového let slova k vytvoření vazby názvů k hodnotám a funkcím.
Functions Poskytuje přehled funkcí v jazyce F#.

Viz také