Kolekcje Scala - Tuple
Krotka Scala łączy w sobie stałą liczbę elementów, dzięki czemu można je przekazywać jako całość. W przeciwieństwie do tablicy lub listy, krotka może zawierać obiekty różnych typów, ale są one również niezmienne.
Poniżej przedstawiono przykład krotki zawierającej liczbę całkowitą, ciąg i konsolę.
val t = (1, "hello", Console)
Co to jest cukier syntaktyczny (skrót) dla następujących -
val t = new Tuple3(1, "hello", Console)
Rzeczywisty typ krotki zależy od liczby i elementów, które zawiera, oraz typów tych elementów. Tak więc typ (99, „Luftballons”) to Tuple2 [Int, String]. Typ ('u', 'r', "the", 1, 4, "me") to Tuple6 [Char, Char, String, Int, Int, String]
Krotki są typu Tuple1, Tuple2, Tuple3 i tak dalej. Obecnie w Scali istnieje górny limit 22, jeśli potrzebujesz więcej, możesz użyć kolekcji, a nie krotki. Dla każdego typu TupleN, gdzie 1 <= N <= 22, Scala definiuje szereg metod dostępu do elementów. Biorąc pod uwagę następującą definicję -
val t = (4,3,2,1)
Aby uzyskać dostęp do elementów krotki t, możesz użyć metody t._1, aby uzyskać dostęp do pierwszego elementu, t._2, aby uzyskać dostęp do drugiego i tak dalej. Na przykład poniższe wyrażenie oblicza sumę wszystkich elementów t.
val sum = t._1 + t._2 + t._3 + t._4
Możesz użyć Tuple do napisania metody, która pobiera List [Double] i zwraca liczbę, sumę oraz sumę kwadratów zwróconych w trzyelementowej Tuple, Tuple3 [Int, Double, Double]. Są również przydatne do przekazywania listy wartości danych jako wiadomości między aktorami w programowaniu współbieżnym.
Wypróbuj następujący przykładowy program. Pokazuje, jak używać krotki.
Przykład
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
val sum = t._1 + t._2 + t._3 + t._4
println( "Sum of elements: " + sum )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Polecenia
\>scalac Demo.scala
\>scala Demo
Wynik
Sum of elements: 10
Iteruj po Tuple
Możesz użyć Tuple.productIterator() metoda iteracji po wszystkich elementach krotki.
Wypróbuj poniższy przykładowy program, aby wykonać iterację po krotkach.
Przykład
object Demo {
def main(args: Array[String]) {
val t = (4,3,2,1)
t.productIterator.foreach{ i =>println("Value = " + i )}
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Polecenia
\>scalac Demo.scala
\>scala Demo
Wynik
Value = 4
Value = 3
Value = 2
Value = 1
Konwersja do String
Możesz użyć Tuple.toString()metoda łączenia wszystkich elementów krotki w ciąg. Wypróbuj poniższy przykładowy program, aby przekonwertować na ciąg.
Przykład
object Demo {
def main(args: Array[String]) {
val t = new Tuple3(1, "hello", Console)
println("Concatenated String: " + t.toString() )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Komenda
\>scalac Demo.scala
\>scala Demo
Wynik
Concatenated String: (1,hello,scala.Console$@281acd47)
Zamień elementy
Możesz użyć Tuple.swap metoda, aby zamienić elementy Tuple2.
Wypróbuj poniższy przykładowy program, aby zamienić elementy.
Przykład
object Demo {
def main(args: Array[String]) {
val t = new Tuple2("Scala", "hello")
println("Swapped Tuple: " + t.swap )
}
}
Zapisz powyższy program w formacie Demo.scala. Poniższe polecenia służą do kompilowania i wykonywania tego programu.
Komenda
\>scalac Demo.scala
\>scala Demo
Wynik
Swapped tuple: (hello,Scala)