上一章我写了scala基本类型,并且在开头弄个“黑暗料理”吓唬大家。。。这一章写scala的循环 for
首先定义一个方法,然后在main方法中运行
1
2
3
4
5
6
7
|
def
for
_
1
=
{
var
greeting
=
"x"
for
(i <-
0
until
10
) {
println((greeting +
=
i))
//无任何返回值
println(greeting)
}
}
|
如果是java语言,我们通常这样
1
2
3
4
5
|
String greeting=
"x"
;
for
(
int
i=
0
;i<
10
;i++)
{
System.out.prinln(greeting+=i)
}
|
再看看ruby
1
2
3
|
for
i
in
0
..(args.size -
1
)
greeting += args[i] +
" "
end
|
继续说,运行测试,在main方法中测试for_1方法
1
2
3
|
def main(args:
Array
[
String
]) {
for_1
}
|
到这里我觉得各位也能发现一些问题(从java程序员角度),我简单解释下:
1. 方法的定义
def开头 有参数加括号,有返回值,需要标注返回类型,如
1
2
3
4
5
|
def for_1_2(x:Int):Int={
var
m =
1
println(x)
m
}
|
2. 关于特殊符号 <-
1
2
|
1
. keyword
2
. Used on
for
-comprehensions, to separate pattern from generator
|
以上是对符号<- 的解释,意思就是
a. 他是关键字
b. 他用于for循环逻辑,用于遍历
下面,我们讲看到for循环的几个变种, 也可能是在spark源码中遇到次数较多的
第一次变种:
1
2
3
4
5
6
|
def
for
2
=
{
val
range
=
0
.until(
10
)
for
(i <- range) {
println(i)
}
}
|
第二次变种,加上个参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def
for
3
(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);
}
}
|
第二个特殊符号出现 “=>” 在最后解释吧
第三次变种,为了下一次变种做铺垫,我去掉了函数定义:
1
2
3
4
5
|
var
greeting
=
""
;
//在foreach 后面加上了括号
args.foreach ({ arg
=
>
greeting +
=
(arg +
" "
)
})
|
第四次变种:
1
|
args.foreach(arg
=
> greeting +
=
(arg +
" "
))
|
最后:
回顾这篇文章 几个比较特殊点
1. unitl
scala.runtime 包下面的RichInt until 方法 用于for循环 举例
1
2
3
|
for
(i <-
0
until
10
) {}
//或者
var
range
=
0
.until(
10
)
|
2. <-
a. 关键字
b. 用于遍历
3. =>
1
2
|
1
. keyword
2
. Used
for
function
types,
function
literals and
import
renaming
|
a. 关键字
b. 用户 for函数的类型, 函数文本 和 导入更名。在for里作用同符号 <- ,导入更名。
4. 函数的定义
1
2
3
4
5
|
def
for
_
6
(x
:
Int)
:
String
=
{
var
m
=
1
println(x)
m+
""
}
|
m+"" 是返回的String
for 语法大概就这样,入门够用了
本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/yjplxq/1412530,如需转载请自行联系原作者