Scala while循环语句

当给定条件为真时,while循环重复一个语句或一组语句。它在执行循环体之前测试条件状态。 只要给定的条件为真,while循环语句重复执行目标语句。

object Demo {
def main(args: Array[String]) {
// Local variable declaration:
var a = 10; // while loop execution
while( a < 20 ){
println( "Value of a: " + a );
a = a + 1;
}
}
}

Scala do...while循环语句

与在循环顶部测试循环条件的while循环语句不同,do...while循环检查循环底部的条件。 一个do...while循环类似于while循环,除了do...while循环保证至少执行一次。

object Demo {
def main(args: Array[String]) {
// Local variable declaration:
var a = 10; // do loop execution
do {
println( "Value of a: " + a );
a = a + 1;
}
while( a < 20 )
}
}

Scala for循环语句

for循环是一种重复控制结构,可以让您有效地编写一个需要执行特定次数的循环。

object Demo {
def main(args: Array[String]) {
var a = 0; // for loop execution with a range
for( a <- 1 to 10){
println( "Value of a: " + a );
}
}
}
object Demo {
def main(args: Array[String]) {
var a = 0; // for loop execution with a range
for( a <- 1 until 10){
println( "Value of a: " + a );
}
}
}
object Demo {
def main(args: Array[String]) {
var a = 0;
var b = 0; // for loop execution with a range
for( a <- 1 to 3; b <- 1 to 3){
println( "Value of a: " + a );
println( "Value of b: " + b );
}
}
}

循环与集合

object Demo {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6); // for loop execution with a collection
for( a <- numList ){
println( "Value of a: " + a );
}
}
}

for循环与过滤器

Scala的for循环允许使用一个或多个if语句过滤掉一些元素。以下是for循环与过滤器的语法。 要为for表达式添加多个过滤器,请使用分号(;)分隔过滤器。

for( var x <- List
if condition1; if condition2...
){
statement(s);
}
Scala

尝试以下示例程序来了解具有过滤器的循环。

示例

object Demo {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10); // for loop execution with multiple filters
for( a <- numList
if a != 3; if a < 8 ){
println( "Value of a: " + a );
}
}
}

for循环与yield

您可以将变量中的for循环存储返回值,或通过函数返回。为此,您可以通过关键字yield来为for表达式的正文添加前缀。以下是语法 -

var retVal = for{ var x <- List
if condition1; if condition2...
}
yield x
Scala

注意 - 大括号已被用来保留变量和条件,并且retVal是一个变量,其中x的所有值将以集合的形式存储。

尝试以下示例程序来了解for循环与yield的使用。

object Demo {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10); // for loop execution with a yield
var retVal = for{ a <- numList if a != 3; if a < 8 }yield a // Now print returned values using another loop.
for( a <- retVal){
println( "Value of a: " + a );
}
}
}

Spark记录-Scala循环语句的更多相关文章

  1. Spark记录-Scala异常与处理

    Scala try-catch语句 Scala提供try和catch块来处理异常.try块用于包含可疑代码.catch块用于处理try块中发生的异常.可以根据需要在程序中有任意数量的try...cat ...

  2. Spark记录-Scala语句(运算符-if-for-while-try-模式匹配)

    Scala条件运算符 Scala条件运算符在下表中列出. 运算符 操作 描述 && 与 运算符左侧和右侧的值为true.仅当左侧为真时,右侧才被计算. || 或 左侧或右侧的至少一个值 ...

  3. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)

    object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...

  4. Spark记录-Scala shell命令

    1.scala shell命令 scala> :help All commands can be abbreviated, e.g., :he instead of :help. :edit & ...

  5. Spark记录-scala快速入门

    1.hello world程序 object HelloWorld { def main(args: Array[String]) { println("Hello,World!" ...

  6. Spark记录-Scala类和对象

    本章将介绍如何在Scala编程中使用类和对象.类是对象的蓝图(或叫模板).定义一个类后,可以使用关键字new来创建一个类的对象. 通过对象可以使用定义的类的所有功能. 下面的图通过一个包含成员变量(n ...

  7. Spark记录-Scala集合

    Scala列表 Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别. 首先,列表是不可变的,列表的元素不能通过赋值来更改. 其次,列表表示一个链表,而数组是平的. 具有类 ...

  8. Spark记录-Scala数组/List/Map/Set

    import Array._ import scala.collection.mutable.Set object DataStructure { def main(args:Array[String ...

  9. Spark记录-Scala语法基础

    参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...

随机推荐

  1. 架构师修炼 III - 掌握设计原则

    关于软件的设计原则有很多,对于设计原则的掌握.理解.实践及升华是架构师的一项极为之必要的修炼. 记得在12年前第一次阅读<敏捷开发>时,五大基本设计原则就深深地植入到我的脑海中一直影响至今 ...

  2. Maven构建项目速度太慢的解决办法

    问题描述 通过idea新建maven项目,参数设置好后,idea自动构建maven项目时,速度很慢. 参数设置如图: 执行时间如下图: Total time为8:49,花了将近十分钟时间. 连续尝试了 ...

  3. Scrapy持久化存储

    基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作; 执行输出指定格式进行存储:将爬 ...

  4. 云服务器+tomcat+mysql+web项目搭建部署

    云服务器+tomcat+mysql+web项目搭建部署 1.老样子,开头墨迹两句. 作为我的第二篇文章,有很多感慨,第一篇人气好低啊,有点小丧气,不过相信我还是经验少,分享的都是浅显的,所以大家可能不 ...

  5. [DEBUG]椭圆的中点Bresenham算法边缘绘制出现错误

    在使用椭圆的中点Bresenham算法绘制椭圆时, 当椭圆足够大时, 椭圆的边缘会出现下面这种情况. 出错原因: 将a, b声明为了int类型, 导致中点判别式中发生溢出 关注后面的a*b*a*b当a ...

  6. PAT甲题题解-1008. Elevator (20)-大么个大水题,这也太小瞧我们做题者的智商了

    如题... #include <iostream> #include <cstdio> #include <algorithm> #include <cstr ...

  7. Beta版本冲刺(六)

    目录 组员情况 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内最新成果 团队签入记 ...

  8. 使用VS2013进行C#程序的单元测试

    没有按照预期的那样做出成功的单元测试,磕磕绊绊参照了下面两篇博客大致做出来了,所以很有必要记录一下过程. http://www.cnblogs.com/duasonir/p/5299732.html( ...

  9. Week1个人作业

    关于教材的疑问 阅读的教材<构建之法> 1第一章中提到:“软件企业=软件+商业模式”,这样的结构是否过于简单,尤其是在互联网+时代 2.在进行单元测试的时候,怎么做到100%覆盖 3.个人 ...

  10. 第15周-反射与JSP

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. 网页制作 1.1 制作一个网页index.html,内有字体<FONT>.链接< ...