Detaillierte Erklärung der speziellen Symbole in Scala

1. => (anonyme Funktion)

=> Anonyme Funktion. In Spark ist eine Funktion auch ein Objekt, das einer Variablen zugewiesen werden kann.

Das anonyme Funktionsdefinitionsformat von Spark:
(Parameterliste) => {Funktionskörper}

Daher besteht die Rolle von => darin, eine anonyme Funktionsinstanz zu erstellen.

Zum Beispiel: (x: Int) => x +1, was der folgenden Java-Methode entspricht:

public int function(int x) {
    
    
 return x+1;
}

Beispiel:

class Symbol {
    
    
 var add = (x: Int) => x + 1
}
 
object test2 {
    
    
 def main (args: Array[String] ): Unit = {
    
    
 var symbol = new Symbol
 printf(""+ symbol.add.toString())
 }
}

2. <- (Durchquerung einstellen)

Beispiele für die Schleifenüberquerung sind:

var list = Array(1,2,3,4)
for (aa <- list) {
    
    
 printf(aa+" ")
}

Der obige Code ähnelt dem Java-Code:

int[] list = {
    
    1,2,3,4};
for(int aa : list) {
    
    
 System.out.print(aa+" ");
}

3. ++ = (String-Spleißen)

var s:String = "a"
s+="b"
println(s)
s++="c"
println(s)

4. ::: Drei Doppelpunktoperatoren und :: zwei Doppelpunktoperatoren

  • ::: Die drei Doppelpunktoperatoren repräsentieren die Verkettungsoperation von List. (Ähnlich wie list1.addAll (list2) in Java)
  • :: Die beiden Doppelpunktoperatoren repräsentieren die Verkettungsoperation zwischen gewöhnlichen Elementen und Liste. (Ähnlich wie bei der Operation list1.add (A) in Java)
例子: 
val one = List(1,2,3)
val two = List(4,5,6)
val three = one ::: two
println(three.toString())
 
val four = 7 :: three
 
println(four.toString())

5. -> Konstruiere Tupel und _N besuche das N-te Element des Tupels

1. Die Bedeutung von Tupeln in Scala:

  • Tupel ist eine Liste verschiedener Arten von Wertaggregationsthreads
  • Wenn Sie mehrere Werte in Klammern setzen, bedeutet dies ein Tupel

2. Der Unterschied zwischen Tupel und Array in Scala: Die Datentypen der Elemente im Array müssen gleich sein, aber die Datentypen der Tupel können unterschiedlich sein.

例子:
val first = (1,2,3) // 定义三元元组
 
val one = 1
val two = 2
val three = one -> two
 
println(three) // 构造二元元组
 
println(three._2) // 访问二元元组中第二个值

Fügen Sie hier eine Bildbeschreibung ein

6. Verwendung von _ (Unterstrich)

  • Platzhalter
    _ kann einen Platzhalter ähnlich * spielen:
import org.apache.spark.SparkContext._
  • Bezieht sich auf jedes Element in der Sammlung
例如 遍历集合筛选列表中大于某个值的元素:

val lst = List(1,2,3,4,5)
val lstFilter = lst.filter(_ > 3)
  • Ruft den Elementwert des angegebenen Index im Tupel ab
val ss = (1,"22","333")
println(ss._1)
  • Verwenden Sie den Mustervergleich, um die Mitglieder des Tupels zu erhalten
val m = Map(1 -> 2,2 -> 4)
for ((k,_) <- m) println(k) //如果不需要所有部件, 则在不需要的部件使用_; 本例只取key,因此在value处用_

Fügen Sie hier eine Bildbeschreibung ein

  • Mitgliedsvariablen anstelle lokaler Variablen fügen Standardwerte hinzu
var s:Int=_
def main(args: Array[String]): Unit = {
    
    
 println(s)
}

6. + =

Fügen Sie dem Variablenarray Elemente hinzu

val arrBuf1 = new ArrayBuffer[Int]()
arrBuf1+= 11 // 添加一个元素
 
println(arrBuf1)

7. - =

Entfernen Sie den entsprechenden Wert aus dem variablen Array der Karte

val arrBuf1 = new ArrayBuffer[Int]()
arrBuf1+= 11 // 添加一个元素
arrBuf1+= 12 // 添加一个元素
arrBuf1-= 12 // 删除一个元素
 
println(arrBuf1)
 
var map = Map(1 -> 1,2 -> 2,3 ->3 )   //key -> value
map-=1
println(map)

Ich denke du magst

Origin blog.csdn.net/m0_49834705/article/details/112717099
Empfohlen
Rangfolge