【Scala學習筆記】4. For、Function、Lazy

For

for循環之前已經提到過,這裏做進階介紹:

for (i <- 1 to 2;j <- 1 to 2 if i != j) 
  println(100*i + j + " ")

可以加入條件表達式,當然,條件表達式可以非常複雜。

Function

  • 函數是有值的,如果吳返回值則函數值爲Unit。因爲函數是有值的,所以函數可以作爲函數的參數進行傳遞。
  • 匿名函數,是真正的函數的一種常態。

下面的代碼中:
第一行是定義了一個名稱爲addA的函數,其具有一個名爲x的整形參數,此函數的作用是對參數進行+100的操作。
第二行是定義了一個匿名函數,沒有名稱,直接出現了參數列表(x : 100),然後跟上=>,後面的x + 200操作是這個匿名函數的具體操作。直接將匿名函數的值定義給add常量,直接用add調用該匿名函數即可。

def addA(x : Int) = x + 100
val add = (x : Int) => x + 200
addA(10)
add(10)

下面是Spark的WordCount程序,其中大量用到了匿名函數:

line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)

Lazy

無論是變量還是常量,在定義時加上lazy作爲修飾,表示延遲執行,懶執行。即當第一次真正使用該變量或常量時,才真正執行賦值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章