上一章我寫了scala基本類型,而且在開頭弄個「黑暗料理」嚇唬你們。。。這一章寫scala的循環 forjava
首先定義一個方法,而後在main方法中運行程序員
def for_1={ var greeting = "x" for (i <- 0 until 10) { println((greeting += i)) //無任何返回值 println(greeting) } }
若是是java語言,咱們一般這樣ruby
String greeting="x"; for(int i=0;i<10;i++) { System.out.prinln(greeting+=i) }
再看看rubyide
for i in 0..(args.size - 1) greeting += args[i] + " " end
繼續說,運行測試,在main方法中測試for_1方法函數
def main(args: Array[String]) { for_1 }
到這裏我以爲各位也能發現一些問題(從java程序員角度),我簡單解釋下:測試
1. 方法的定義spa
def開頭 有參數加括號,有返回值,須要標註返回類型,如scala
def for_1_2(x:Int):Int={ var m = 1 println(x) m }
2. 關於特殊符號 <-generator
1. keyword 2. Used on for-comprehensions, to separate pattern from generator
以上是對符號<- 的解釋,意思就是 源碼
a. 他是關鍵字
b. 他用於for循環邏輯,用於遍歷
下面,咱們講看到for循環的幾個變種, 也多是在spark源碼中遇到次數較多的
第一次變種:
def for2={ val range = 0.until(10) for (i <- range) { println(i) } }
第二次變種,加上個參數:
def for3(args: Array[String]){ var greeting = ""; args.foreach { arg => greeting += (arg + " ") println(greeting); } //arg是臨時變量 var range = 0.until(10) range.foreach { arg => greeting += (arg + " ") println(greeting); } }
第二個特殊符號出現 「=>」 在最後解釋吧
第三次變種,爲了下一次變種作鋪墊,我去掉了函數定義:
var greeting = ""; //在foreach 後面加上了括號 args.foreach ({ arg => greeting += (arg + " ") })
第四次變種:
args.foreach(arg => greeting += (arg + " "))
最後:
回顧這篇文章 幾個比較特殊點
1. unitl
scala.runtime 包下面的RichInt until 方法 用於for循環 舉例
for (i <- 0 until 10) {} //或者 var range = 0.until(10)
2. <-
a. 關鍵字
b. 用於遍歷
3. =>
1. keyword 2. Used for function types, function literals and import renaming
a. 關鍵字
b. 用戶 for函數的類型, 函數文本 和 導入改名。在for裏做用同符號 <- ,導入改名。
4. 函數的定義
def for_6(x:Int):String={ var m = 1 println(x) m+"" }
m+"" 是返回的String
for 語法大概就這樣,入門夠用了