2016-07-21 15 views
0

Ich bin neu zu funken mit scala und sehr verwirrt durch die Notationen (x, y) in einigen Szenarien und x._1, y._1. Vor allem, wenn sie übereinander in Funken Transformationen verwendetDarstellung der Werte (x, y) vs x._1, y._1

könnte jemand erklären, gibt es eine bestimmte Daumenregel für, wenn jede dieser Syntaxen verwenden

+0

Verwenden Sie '(x, y)' mit richtiger Benennung, da es einfacher zu verstehen ist. – ipoteka

Antwort

2

Grundsätzlich gibt es zwei Möglichkeiten, um ein Tupel Parameter in anonymen Zugriff auf Funktion. Sie sind funktional gleichwertig, verwenden Sie die von Ihnen bevorzugte Methode.

  1. Durch die Attribute _1, _2, ...
  2. Durch Muster in variable mit aussagekräftigen Namen

    val tuples = Array((1, 2), (2, 3), (3, 4)) 
    
    // Attributes 
    tuples.foreach { t => 
        println(s"${t._1} ${t._2}") 
    } 
    
    // Pattern matching 
    tuples.foreach { t => 
        t match { 
        case (first, second) => 
         println(s"$first $second") 
        } 
    } 
    
    // Pattern matching can also written as 
    tuples.foreach { case (first, second) => 
        println(s"$first $second") 
    } 
    
1

Die Notation (x, y) ist ein Tupels aus 2 Elementen übereinstimmt, x und y. Es gibt verschiedene Möglichkeiten, Sca- la-Tupel-Beispiele und -Syntax für die einzelnen Werte in einem Tupel zu erhalten. Sie können die ._1, ._2 Notation an den Elementen zu erhalten:

val tup = (3, "Hello") // A tuple with two elements 

val number = tup._1  // Gets the first element (3) from the tuple 
val text = tup._2   // Gets the second element ("Hello") from the tuple 

Sie können auch Musterabgleich verwenden. Eine Möglichkeit, die beiden Werte zu extrahieren ist wie folgt:

val (number, text) = tup 

Im Gegensatz zu einer Sammlung (zum Beispiel ein List) ein Tupel hat eine feste Anzahl von Werten (es ist nicht immer genau zwei Werte) und die Werte können unterschiedliche Typen (wie zum Beispiel eine Int und eine String im obigen Beispiel).

Es gibt viele Tutorials über Scala-Tupel, zum Beispiel: Scala tuple examples and syntax.

Verwandte Themen