上一章我写了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 语法大概就这样,入门够用了