let – vazby (F#)
A vazby identifikátor přidruží hodnotu nebo funkce.Použití let klíčové vázat název hodnoty nebo funkce.
// Binding a value:
let identifier-or-pattern [: type] =
expression
body-expression
// Binding a function value:
let identifier parameter-list [: return-type ] =
expression
body-expression
Poznámky
let Ve vazbě výrazy k definování hodnot nebo jeden nebo více názvů funkce se používá klíčové slovo.Nejjednodušší forma let výraz sváže název jednoduchá hodnota takto.
let i = 1
Pokud výraz z identifikátoru oddělte pomocí nového řádku, musíte odsazení každého řádku výraz, jako v následujícím kódu.
let someVeryLongIdentifier =
// Note indentation below.
3 * 4 + 5 * 6
Namísto pouze název vzorku, který obsahuje názvy lze zadat, například n-tice, jak je znázorněno v následujícím kódu.
let i, j, k = (1, 2, 3)
body-expression Je výraz, ve kterém jsou použity názvy.Výraz text se zobrazí na samostatném řádku odsazení řádku nahoru přesně podle prvního znaku let klíčové slovo:
let result =
let i, j, k = (1, 2, 3)
// Body expression:
i + 2*j + 3*k
A let vazby můžete zobrazit na úrovni modulu v definici typu třídy nebo místní obory, například do definice funkce.A let vazby na nejvyšší úrovni v modulu nebo typ třídy není nutné výraz subjektu, ale na jiných úrovních oboru je vyžadován výraz subjektu.Vázaný názvy jsou použitelné po bodu definice, ale není kdykoli před let vazby se zobrazí, jak je znázorněno v následujícím kódu.
// Error:
printfn "%d" x
let x = 100
// OK:
printfn "%d" x
Funkce vazby
Funkce vazby pravidlům pro hodnotu vazby, vazby funkce obsahovat název funkce a parametry, jak je znázorněno v následujícím kódu.
let function1 a =
a + 1
Obecně jsou vzorky jako vzorek tuple parametry:
let function2 (a, b) = a + b
A let vazba výraz vyhodnocen jako hodnota posledního výrazu.Proto v následujícím příkladu kódu hodnota result se vypočítává z 100 * function3 (1, 2), který vyhodnocuje na 300.
let result =
let function3 (a, b) = a + b
100 * function3 (1, 2)
Další informace naleznete v tématu Funkce (F#).
Anotace type
Můžete určit typy parametrů včetně dvojtečky (:) následované názvem typ, všechny uzavřené v závorkách.Můžete také určit typ vrácené hodnoty připojením dvojtečky a typ po posledním parametrem.Úplné typ poznámky pro function1, se celá jako typy parametrů by takto.
let function1 (a: int) : int = a + 1
Pokud neexistují žádné explicitní typ parametry, odvození typu lze určit typy parametrů funkcí.To může zahrnovat automaticky proces generalizace typ parametru být obecný.
Další informace naleznete v tématu Automatická generalizace (F#) a Odvození typu (F#).
Nechť vazby tříd
A let vazba může být typ třídy, ale není ve struktuře nebo typu záznamu.Chcete-li použít umožňují, vazba v typu třídy třídy musí mít primární konstruktor.Parametry pro konstruktor musí být po název typu v definici třídy.A let vazba v typu třídy definuje pole private a členy pro daný typ třídy a spolu s do typu vazby tvoří primární konstruktor typu kód.Zobrazit následující příklady kódu třídy MyClass s pole private field1 a field2.
type MyClass(a) =
let field1 = a
let field2 = "text"
do printfn "%d %s" field1 field2
member this.F input =
printfn "Field1 %d Field2 %s Input %A" field1 field2 input
Obory z field1 a field2 jsou omezeny na typ, které jsou deklarovány.Další informace naleznete v tématu Vazby let ve třídách (F#) a Třídy (F#).
Zadejte parametry umožňují vazby
A let vazby na úrovni modulu typu nebo výpočet výrazu můžete mít parametry typu explicitní.Nechte se vazba ve výrazu, například v definici funkce nemůže mít parametry typu.Další informace naleznete v tématu Obecné typy (F#).
Vazby umožňují atributy
Atributy mohou být použity na nejvyšší úrovni let vazby v modulu, jak je znázorněno v následujícím kódu.
[<Obsolete>]
let function1 x y = x + y
Rozsah a usnadnění vazby umožňují
Obor entity s umožňují vazby je omezeno na část obsahující oboru (například funkci, modul, souboru nebo třídy) po vazby.Proto lze říci, že vám umožňují vazby zavádí do oboru názvu.V modulu umožňují vázané hodnoty nebo funkce je přístupná klientům modul jako modul je přístupná, protože umožňují vazby v modulu jsou zkompilovány do veřejné funkce modulu.Soukromé třídy jsou naopak umožňují vazby ve třídě.
Funkce v modulech, obvykle musí být určen název modulu při použití kódu klienta.Například pokud modul Module1 má funkci function1, by uživatelé zadat Module1.function1 odkazuje na funkci.
Modulu mohou používat dovozní prohlášení funkce v rámci modulu zpřístupnit pro použití bez právě kvalifikovaný název modulu.Právě uvedený například v modulu Uživatelé v tomto případě otevřít modul pomocí otevřít dovozní prohlášení Module1 a poté function1 přímo.
module Module1 =
let function1 x = x + 1.0
module Module2 =
let function2 x =
Module1.function1 x
open Module1
let function3 x =
function1 x
Některé moduly mají atribut RequireQualifiedAccess, což znamená, že funkce, které vystavují musí být určen název modulu.Tento atribut má například modul F# seznam.
Další informace o modulech a řízení přístupu naleznete v tématu Moduly (F#) a Řízení přístupu (F#).