控制结构

if条件表达式

  val x = 6
 if (x>0){
   println("This is a positive number")
}else if(x==0){
   println("This is not a zero")
}else{
   println("This is not a positive number")
}
  • 有一点与Java不同的是,Scala中的if表达式的值可以赋值给变量

val y = 6
val a = if (y  > 0) 1 else -1

scala> val x = 1
x: Int = 1
scala> val z = if(x > 0) 1 else "error"
z: Any = 1

scala> val x = -1
x: Int = -1
scala> val z = if(x > 0) 1 else "error"
z: Any = error

scala> val x = -1
x: Int = -1
scala> val z = if(x > 0) 1
z: AnyVal = ()
scala> val z = if(x > 0) 1 else()
z: AnyVal = ()

while循环

scala> var i = 9
i: Int = 9
scala> while (i > 0){
    | i -= 1
    | printf("i is %d\n" , i)
    | }
i is 8
i is 7
i is 6
i is 5
i is 4
i is 3
i is 2
i is 1
i is 0

scala> var i = 0
i: Int = 0
scala> do {
    | i += 1
    | println(i)
    | } while (i < 5)
1
2
3
4
5

for循环

  • 格式

for (变量 <- 表达式) 语句块
//其中,“变量<-表达式”被称为“生成器(generator)”
scala> for (i <- 1 to 5) println(i)
1
2
3
4
5
scala> for (i <- 1 to 5 by 2) println(i)
1
3
5
  • 不希望打印出所有的结果,过滤出一些满足制定条件的结 果,需要使用到称为“守卫(guard)”的表达式

  • 比如,只输出1到5之中的所有偶数,可以采用以下语句

scala> for (i <- 1 to 5 if i % 2 == 0) println(i)
2
4
  • Scala也支持“多个生成器”的情形,可以用分号把它们 隔开,比如:

scala> for (i <- 1 to 5 ; j <- 1 to 3) println(i*j)
1
2
3
2
4
6
3
6
9
4
8
12
5
10
15
  • 可以给每个生成器都添加一个“守卫”,如下:

scala> for (i <- 1 to 5 if i % 2 == 0 ; j <- 1 to 3 if j != i) println(i*j)
2
6
4
8
12
for推导式
  • Scala的for结构可以在每次执行的时候创造一个值,然后将包含了所有产生值的集合作为for循环表达式的结果返回, 集合的类型由生成器中的集合类型确定

  • 通过for循环遍历一个或多个集合,对集合中的元素进行“推导”,从而计算得到新的集合,用于后续的其他处理

  • 格式:

for (变量 <- 表达式) yield {语句块}
scala> val r = for (i <- 1 to 5 if i%2 == 0) yield {println(i); i}
2
4
r: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4)

Scala_控制结构的更多相关文章

  1. PHP语法(三):控制结构(For循环/If/Switch/While)

    相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 本文我来总结几个PHP常用的控制结构,先来 ...

  2. Python 30分钟入门——数据类型 and 控制结构

    Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Pytho ...

  3. 学习scala03 控制结构

    scala拥有非常宽松的控制结构. if与while scala中的if和while几乎和java中的结构一模一样. //if语句 val a= ){ println(“”) }else{ print ...

  4. Lua 学习笔记(四)语句与控制结构

    一.赋值与多重赋值      赋值的基本含义是改变一个变量的值或table中字段的值.Lua中允许“多重赋值”,也就是同时为多个值赋予多个变量,每个变量之间以逗号分隔.      Lua会先对等号右边 ...

  5. Scala入门之控制结构

    package com.dtspark.scala.basics /** * Scala中的基本控制结构有顺序.条件和循环三种方式,这个其它的JVM语言是一致的,但是Scala也有一些高级的流程控制结 ...

  6. 【Java 基础篇】【第三课】表达式、控制结构

    这两天再看敏捷开发流程,我这个算是敏捷博客吗? 哈哈o(∩_∩)o package a.b; public class Three { static void Expression() { Syste ...

  7. scala中如何编写自定义的流程控制结构

    scala是一种函数式编程风格的语言,除了常见的if......else  ,for ,while等传统的流程控制结构,也可以自定义流程控制的控制结构. 再了解scala如何实现编写新的流程结构,我们 ...

  8. oracle PL/SQL(procedure language/SQL)程序设计--控制结构(if else )

    IF逻辑结构:IF-THEN-END IFIF-THEN-ELSE-END IFIF-THEN-ELSIF-END IF 语法 IF condition THEN  statements;[ELSIF ...

  9. TCL语言笔记:TCL中的控制结构命令

    一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...

随机推荐

  1. Intellij idea 系列教程目录

    Intellij idea 系列教程目录 Intellij idea 系列教程之破解方法 Intellij idea 系列教程之常用快捷键 Intellij idea 系列教程之常用配置项 每天用心记 ...

  2. linux 常用命令(三)ssh

    linux 常用命令(三)SSH 一.SSH 安装及免密登陆 (1) SSH 安装并配置 CentOS 默认已安装了 SSH client.SSH server,打开终端执行如下命令进行检验 rpm ...

  3. 【Web】Sublime Text 3 连接sftp/ftp(远程服务器)

    在 Win 下常用 Xftp 软件来和远程服务传递文件,但是要是在项目开发的时候频繁的将远程文件拖到本地编辑然后再传回远程服务器,那真是麻烦无比,但是Sublime中SFTP插件,它让这世界美好了许多 ...

  4. 2018.11.04 NOIP训练 小水塘(并查集)

    传送门 这是复习普及组的时候做过的题了. 之前一直觉得很难码没有去做. 现在发现可以用并查集直接水过去. 其实就是把题目中说的连通的部分的面积用带权并查集维护一下就行了. 代码: #include&l ...

  5. jQuery 常用效果

    hide和show 同样有 fadeInhe fadeOut 的功能 $(document).ready(function(){ $("#hide").click(function ...

  6. Educational Codeforces Round 60 D dp + 矩阵快速幂

    https://codeforces.com/contest/1117/problem/D 题意 有n个特殊宝石(n<=1e18),每个特殊宝石可以分解成m个普通宝石(m<=100),问组 ...

  7. vim 查找替换批量替换

    一.vi查找:    当你用vi打开一个文件后,因为文件太长,如何才能找到你所要查找的关键字呢?在vi里可没有菜单-〉查找, 不过没关系,你在命令模式下敲斜杆(/)这时在状态栏(也就是屏幕左下脚)就出 ...

  8. c# devexpress学习绘图

    用字典方式存储数据并绘图:http://www.xuebuyuan.com/465384.html 数据库存储数据,并对图形作各种设置:http://www.cnblogs.com/xuhaibiao ...

  9. CentOS7 安装可视化脚本安装包Webmin

    一.简介 Webmin是一个基于Web的Linux系统管理界面.你就可以通过图形化的方式设置用户账号.Apache.DNS.文件共享等服务. 二.安装 1.下载安装包到本地Windows系统 http ...

  10. js,javascript,删除元素,创建元素,插入子元素

    删除元素示例代码 <html> <head> </head> <body> <div> <div id="delId&quo ...