首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

scala 去掉continue跟break

2012-11-04 
scala 去掉continue和break? ? 在programming in scala中P175页中提到?Living without break and continue

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 Javaboolean 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) -1else if (args(i).startsWith("-")) searchFrom(i + 1)else if (args(i).endsWith(".scala")) ielse 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时,想比较上个元素和这个元素,又该怎么办?

?


热点排行