Scala循环语句
Scala循环语句与java类似,总共有三种循环类型:
while循环:运行一系列语句,如果条件为true就会重复运行,直到条件变为false
object Test{
def main(args: Array[String]) {
var a = 30;
do{
println("Value of a:" + a);
a = a + 1;
} while (a < 20)
}
}
输出:
Value of a:10
Value of a:11
Value of a:12
Value of a:13
Value of a:14
Value of a:15
Value of a:16
Value of a:17
Value of a:18
Value of a:19
do…while循环:类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块,也就是说,即使条件判断为false,代码块也会执行一次
object Test {
def main(args: Array[String]) {
// 局部变量
var a = 10;
// do 循环
do{
println( "Value of a: " + a );
a = a + 1;
}while( a < 20 )
}
}
输出:
Value of a:30
for循环:用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。
格式:
for( var x <- Range ){
statement(s);
}
上面的示例代码中,Range可以是一个数字区间表示 i to j ,或者 i until j。左箭头 <- 用于为变量 x 赋值。
类似于python的语法
# python中的for循环
for x in Range():
pass
for循环实例
i to j的形式
object Test{
def main(args: Array[String]) {
// 局部变量
var a = 0;
// for循环
for ( a <- 1 to 5 ){
println("Value of a:" + a);
}
}
}
输出:
Value of a:1
Value of a:2
Value of a:3
Value of a:4
Value of a:5
i until j的形式
object Test{
def main(args: Array[String]) {
var b = 0;
for ( a <- 1 until 5 ){
println("Value of b:" + a);
}
}
}
输出:
Value of b:1
Value of b:2
Value of b:3
Value of b:4
从上面的例子中科院发现,i to j的形式包含j, i until j的形式不包含j
for循环遍历集合
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3);
// for 循环
for( a <- numList ){
println( "Value of a: " + a );
}
}
}
输出:
value of a: 1
value of a: 2
value of a: 3
for循环嵌套
在scala中,写一个for就可以实现for循环的嵌套,只要用‘;’来区分多个循环区间即可
object Test {
def main(args: Array[String]) {
var a = 0;
var b = 0;
// for 循环
for( a <- 1 to 2; b <- 1 to 2){
println( "Value of a: " + a );
println( "Value of b: " + b );
}
}
}
输出:
Value of a: 1
Value of b: 1
Value of a: 1
Value of b: 2
Value of a: 2
Value of b: 1
Value of a: 2
Value of b: 2
for循环过滤
Scala 可以使用一个或多个 if 语句来过滤一些元素。
使用方法是在Range后面加上if判断语句即可,多个条件之间用‘;’隔开
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for 循环
for( a <- numList
if a != 3; if a < 5 ){
println( "Value of a: " + a );
}
}
}
输出:
Value of a: 1
Value of a: 2
Value of a: 4
for循环使用yield
yield会将循环中符合条件的元素记录下来,循环结束后返回一个列表list()
实例
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for 循环
var retVal = for{ a <- numList
if a != 3; if a < 2
}yield a
// 输出返回值
println(retVal);
}
}
输出:
retVal:List(1, 2, 4)