Udostępnij za pośrednictwem


Krotki (F#)

A krotka jest grupowanie wartości zamówione, ale bez nazwy, prawdopodobnie różnych typów.

( element , ... , element ) 

Uwagi

Każdy element w poprzednim składnia może być dowolnym wyrażeniem.

Przykłady

Przykładami krotek pary, triples i tak dalej, w tych samych lub różnych typów.Niektóre przykłady są przedstawione w poniższym kodzie.

// Tuple of two integers.
( 1, 2 ) 

// Triple of strings.
( "one", "two", "three" ) 

// Tuple of unknown types.
( a, b ) 

// Tuple that has mixed types.
( "one", 1, 2.0 ) 

// Tuple of integer expressions.
( a + 1, b + 1) 

Uzyskiwanie poszczególnych wartości.

Dopasowywania do wzorca można użyć do dostępu i przypisywania nazw elementy spoiny, jak pokazano w poniższym kodzie.

let print tuple1 =
   match tuple1 with
    | (a, b) -> printfn "Pair %A %A" a b

Można używać deseni krotka w let wiązania w następujący sposób.

let (a, b) = (1, 2)

To powiązanie wartości a i b w tym samym czasie.Jeśli konieczne jest tylko jeden element spoiny, z symbolem wieloznacznym (podkreślenie) może służyć w celu uniknięcia tworzenia nowej nazwy dla zmiennej, która nie ma potrzeby.

let (a, _) = (1, 2)

Funkcje fst i snd zwraca pierwszy i drugi elementy spoiny, odpowiednio.

let c = fst (1, 2)
let d = snd (1, 2)

Nie ma żadnej funkcji wbudowanych, zwracającą trzeci element trzykrotnie, ale łatwo jednego zapisu w następująco.

let third (_, _, c) = c

Ogólnie jest lepiej jest używać dopasowywania do wzorca elementy spoiny poszczególnych dostęp do.

Za pomocą krotek

Krotek zapewniają wygodny sposób zwracać wiele wartości z funkcji, jak pokazano w poniższym przykładzie.W tym przykładzie wykonuje dzielenie i zwraca wynik zaokrąglony operacji jako pierwszy członek pary krotka, a reszta drugiego członka pary.

let divRem a b = 
   let x = a / b
   let y = a % b
   (x, y)

Krotek można również jako argumenty funkcji, gdy użytkownik chce uniknąć niejawny currying argumenty funkcji, które jest implikowane przez Składnia funkcji zwykłe.

let sumNoCurry (a, b) = a + b

Zwykłe składnia do definiowania funkcji let sum a b = a + b pozwala na zdefiniowanie funkcji, która jest częściowe stosowanie pierwszy argument funkcji, jak pokazano w poniższym kodzie.

let addTen = sum 10
let result = addTen 95  
// Result is 105.

Za pomocą krotki jako parametr wyłącza currying.Aby uzyskać więcej informacji, zobacz "Częściowego stosowania argumenty" w Funkcje (F#).

Nazwy typów krotki

Podczas pisania się nazwy typu, który jest krotki Użyj * symbol do oddzielania elementów.Dla spójnej kolekcji, która składa się z int, floati string, takich jak (10, 10.0, "ten"), typ, które powinny być zapisane w następujący sposób.

int * float * string

Skompilowanej formie krotek

Są tylko przy użyciu krotek F# i nie narażają je w innych językach i nie są wyróżniane wersji.NET Framework w wersji 4 poprzedzone, można zignorować w tej sekcji.

Krotek są kompilowane do obiektów z jednego z kilku typów rodzajowy, wszystkie nazwane Tuple, które są przeciążone liczby argumentów skonkretyzowanego lub liczba parametrów typu.Typy krotka są wyświetlane w tym formularzu, podczas wyświetlania w innym języku, takich jak C# lub Visual Basic lub podczas korzystania z narzędziem, które nie są znane z F# konstrukcji.Tuple Typy zostały wprowadzone w.NET Framework, 4.Jeśli są wyróżniane starszej wersji.NET Framework, kompilator używa wersji System.Tuple z wersji 2.0 F# Podstawowa biblioteka.Typy w tej bibliotece są używane tylko dla aplikacji, które docelowe 2.0, 3.0 i 3.5 wersji.NET Framework.Przesyłanie dalej typu jest używana do zapewniają zgodność binarny.NET Framework 2.0 i.NET Framework 4 F# składniki.

Zobacz też

Inne zasoby

Materiały referencyjne dotyczące języka F#

Typy F#