1、Scala中的集合是这样写的:List(1,2,3,4) //建立一个int型的集合
2、<- 被称为生成器(generator),在for循环的例子的执行过程中,集合numbList中的元素将依次赋值给a
3、理解yield
【条件表达式】
1、if...else...,scala中的if/else和java或C++中的一样。不过scala中的if/else是有值的,这个值就是跟在if/eles之后表达式的值。
if(x > 0) 1 else -1
上述表达式的值可能是1也可能是-1,这取决于x的值。
另外一种情况是,如果if语句后面返回Int类型,else语句返回String类型,那么整个if/else表达式的返回类型是混合类型,返回这俩个类型的的公共超类——Any。
还有一种情况是如果只有if的情况下,并且if不满足,那么这时候表达式的返回值是“()”,Unit类型,相当于java或C++中void。(从技术上将,void没有值,unit有一个表示“无值”的值。好比一个空钱包和一个里面装着一张写着“没钱”的无面值钞票的钱包。)
【输入和输出】
我们可以使用readLine函数从控制台读取一行输入。如果要读取数字、Boolean或者字符,可以使用readInt、readDouble、readByte、readShort、readLong、readFloat、readBoolean或者readChar。readLine与其他方法相比,多了一个带参数的方法,可以作为提示字符串
val name = readLine("你的名字")
println("你的名字是:" + name)
【循环】
Scala中的while循环和do...while循环语法和Java一样。需要重点说明的是for循环
1、基本for循环
for循环语法,<-左箭头是用来给变量a赋值。to是包含10,until是不包含10
var
a =
0
;
//
这一步不是必须的,
for
循环内会自动创建的
for
(a <-
1
to
10
){
println
(a);
}
Scala中的for循环有点类似于for...each循环,对于集合的遍历更能体现
var
numbList =
List(1,3,4,6,7,8,9,0);
for
(a <- numbList){
println
(a);
}
2、高级for循环
我们可以以“变量 <- 表达式”的形式提供多个生成器,用分号将它们分隔开。这个就是java中的嵌套for循环,这个例子中外围i运行一次,j会运行三次,所以整个for循环会运行9次。
for(i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ")
//将打印 11 12 13 21 22 23 31 32 33
for循环中使用if条件过滤,多个if条件中间用分号;隔开
,我们把以if开头的Boolean表达式称为“守卫”,
注意if之前并没有分号。下面的例子就会把数字3和0给过滤掉。
var
numbList =
List
(
1
,
3
,
4
,
6
,
7
,
8
,
9
,
0
);
for
(a <- numbList
if
a !=
3
;
if
a >
0
){
println
(a);
}
3、for推导式
for循环的结果还可以作为变量储存,这就是yield在for循环中的应用,具体语法如下
var
numbList =
List
(
1
,
3
,
4
,
6
,
7
,
8
,
9
,
0
);
//yield会把符合条件的a存入一个vector
var
retVal =
for(
a <- numbList
if
a !=
3
;
if
a >
0)
yield
a
//
查看结果
for
(i <- retVal){
println
(i);
}
//1 4 6 7 8 9
如果for循环和yield同时使用,yield就相当于java for循环中的方法体
print
(
for
(
i
<-
1
to
10
)
yield
i
%
3
)
//生成Vector(1,2,0,1,2,0,1,2,0,1)
//yield现在相当于for循环的方法体,每次循环都会运行一下“i % 3”这段代码,然后生成集合中的一个值。