`
ordinary
  • 浏览: 79586 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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时,想比较上个元素和这个元素,又该怎么办?

 


分享到:
评论

相关推荐

    Scala安装包和kafka安装包

    Scala是一种强大的、面向对象的编程语言,它集成了函数式编程的特点,被广泛应用于大数据处理和分布式计算领域。Kafka是Apache基金会开发的一款开源流处理平台,它最初由LinkedIn设计并贡献,现在已经成为大数据生态...

    scala sdk scala-2.12.3

    Scala是一种多范式的编程语言,融合了面向对象和函数式编程的特点,它运行在Java虚拟机(JVM)上,能够充分利用Java生态系统的资源。Scala-2.12.3是Scala的一个特定版本,它包含了对Java 8及更高版本的支持,并提供...

    scala3 scala3 scala3 scala3 scala3

    Scala3,也被称为Scala 3或Dotty,是Scala编程语言的一个重大更新,旨在提高其简洁性、可读性和类型安全性。Scala3的发布标志着该语言的进一步成熟,它引入了一系列改进,旨在解决早期版本中的一些痛点,同时保持对...

    Scala和Spark大数据分析函数式编程、数据流和机器学习

    Scala和Spark是大数据分析领域中的两个重要工具,它们在处理大规模数据时表现出强大的性能和灵活性。Scala是一种静态类型的函数式编程语言,而Spark是一个分布式计算框架,尤其适合于大数据处理和分析。本教程将深入...

    面向Java开发人员Scala指南,Scala和servlet的比较

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,为Java开发者提供了一种更高效、更简洁的编程选择。在Java开发领域,Servlet是用于构建Web应用程序的标准API,广泛应用于服务器端编程。本...

    scala2.12.1Windows镜像包

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala2.12.1Windows镜像包"是为Windows操作系统设计的Scala编程环境的安装包,版本号为2.12.1。Scala 2.12.x系列是其重要的一个稳定...

    scala + mybatis 数据库查询

    Scala是一种强大的多范式编程语言,它结合了面向对象和函数式编程的特性。MyBatis则是一款流行的Java持久层框架,主要用于简化数据库操作。在本项目中,"scala + mybatis 数据库查询",我们将探讨如何将Scala与...

    scala-2.12.10.zip

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。这个"scala-2.12.10.zip"文件是Scala编程语言的特定版本——2.12.10,专为Windows操作系统设计的安装包。Scala 2.12.x系列是该语言的一个...

    scala实战高清讲解

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发和大数据分析方面表现出色。"Scala实战高清讲解"这本书是学习Scala的宝贵资源,尤其对于那些希望深入理解并提升Scala技能的...

    scala-2.12.10.tgz

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的概念。Scala运行在Java虚拟机(JVM)上,并且可以充分利用Java的生态系统。`scala-2.12.10.tgz`是一个针对Linux操作系统的Scala安装包,它的版本号...

    最好的scala学习 课件

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理领域,特别是与Apache Spark相结合时。本课件是针对Scala学习者精心准备的资源,旨在帮助你深入理解和掌握Scala的...

    Scala考试题1

    Scala 是一种多范式的编程语言,它融合了面向对象和函数式编程的特性。下面将详细解释题目中涉及的Scala知识点: 1. **var、val 和 def 的区别**: - `var` 定义可变变量,可以多次赋值。 - `val` 定义不可变变量...

    Scala基础与实践

    3. 条件表达式和循环表达式:Scala中的条件表达式使用if进行,循环表达式支持for循环,但Scala没有break和continue关键字。在需要提前退出循环时,通常使用返回值和函数式编程技巧来实现。 4. 类和对象:Scala中类...

    Scala语法简明教程

    - **面向对象+函数式编程**:Scala融合了面向对象编程和函数式编程的特性,支持类、对象和继承的同时也支持高阶函数、不可变性等函数式编程的核心概念。 - **分布式运行**:Scala设计之初就考虑到了并行和分布式...

    scala-2.11.8.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala-2.11.8.rar"压缩包包含了Scala语言的2.11.8版本的源代码,这对于理解Scala的工作原理、学习高级编程技巧以及进行自定义扩展或...

    学习scala好的项目

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于大数据处理、分布式计算和Web开发等领域。Spark是基于Scala构建的大数据处理框架,其高性能和易用性使得Scala在大数据领域备受...

    Scala-2.11.1.zip

    Scala是一种强大的静态类型编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种可扩展的、高效的编程环境。Scala这个名字是“Scalable Language”的缩写,它旨在克服Java的一些局限性,同时保留其平台兼容...

    scala学习源代码

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 ...

    Scala中文版

    Scala是一种多范式编程语言,它融合了面向对象和函数式编程的概念,使其在处理大数据、并发和分布式计算等领域表现出色。"快学Scala(中文完整版).pdf"这本书可能是为初学者或对Scala感兴趣的人设计的,旨在帮助他们...

    windows版scala-2.11.12.zip

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性。Scala运行在Java虚拟机(JVM)上,因此可以充分利用Java生态系统的丰富资源。在这个"windows版scala-2.11.12.zip"压缩包中,包含的是Scala ...

Global site tag (gtag.js) - Google Analytics