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.