scala 去掉continue和break

    在programming in scala中P175页中提到 Living without break and continue,说到scala中不提倡使用break and continue,当然break 和continue主要是在for和while这样的循环中。scala中是提倡使用for,提倡使用while,理由很简单,scala提倡面向函数编程,每个方法都有返回值,而while是没有返回值。

  首先来看看书中175行具的例子。

     java代码

int i = 0;
// This is Java
boolean foundIt = false;
while (i < args.length) {
if (args[i].startsWith("-")) {
i = i + 1;
continue;
}
if (args[i].endsWith(".scala")) {
foundIt = true;
break;
}
i = i + 1;
}

在scala,中去掉break和continue的代码如下:

def searchFrom(i: Int): Int =
if (i >= args.length) -1
else if (args(i).startsWith("-")) searchFrom(i + 1)
else if (args(i).endsWith(".scala")) i
else searchFrom(i + 1)
val i = searchFrom(0)

 

上面的转化过程挺简单,当是continue时,递归调用本身,当是break时,直接返回。

 

然而,现实世界的逻辑不是这样简单,如:现在有一个列表(1 to 10)当值是 1,5,7时 continue,当值是 2,4,9时,break。代码该怎样写。

      对于continue的情况,我们可以用for 在for 里面添加filter过滤来实现 continue ,对于 break  可以 Array中的 takewhile方法。

       如果是代码中同事有break和continue时,我们该怎么办?如果for时,想比较上个元素和这个元素,又该怎么办?

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值