Scala基本概念(二)——循环

1、Scala拥有与Java与C++相同的while和都循环

while(n > 0){

r = r * n

n -= 1

2、Scala的for循环

for(i <- 表达式)

说明:在for循环的变量之前并没有val或var的指定。该变量的类型是集合的元素类型。循环变量的作用域一直持续到循环结束。

3、遍历字符或数组时,可以使用until方法,until方法返回一个不包含上限的区间。

val s = "Hello"

var sum = 0

for(i <- 0 until s.length) // i的最后一个取值是s.length - 1

sum += s(i)

也可以直接遍历字符序列

var sum = 0

for(ch <- "Hello") sum += ch

Scala没有提供break或continue语句来退出循环。

4、高级for循环和for推导式

(1)变量<- 表达式   的形式可以提供多个生成器,用分号将他们隔开

scala> for(i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ")
11 12 13 21 22 23 31 32 33

(2)每个生成器可以带一个守卫,以if开头的Boolean表达式

scala> for(i <- 1 to 3; j <- 1 to 3 if i != j) print((10 * i + j) + " ")
12 13 21 23 31 32

注意:在if之前并没有分号

(3)可以在循环中引入变量

scala> for(i <- 1 to 3; from = 4 - i; j <- from to 3) print((10 * i + j) + " ")
13 22 23 31 32 33 

(4)for循环的循环体以yield开始,则会循环会构造出一个集合,每次迭代生成的一个值----0for推导式

scala> for(i <- 1 to 10) yield i % 3
res42: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)

for推导式生成的集合与它的第一个生成器是类型兼容的

scala> for(c <- "Hello"; i <- 0 to 1) yield (c + i).toChar
res46: String = HIeflmlmop

scala> for(i <- 0 to 1; c <- "Hello") yield (c + i).toChar
res47: scala.collection.immutable.IndexedSeq[Char] = Vector(H, e, l, l, o, I, f, m, m, p)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值