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)