2019-04-16 19:03:01

if else 表达式

  var sumVal = 0

  if ( sumVal == 0 ) {

   println("true")

  } else {

    println("false")

  }Scala中任意表达式都是有返回值的,也就意味着if else表达式其实是有返回结果的,具体返回结果的值取决于满足条件的代码体的最后一行内容:   

  var result = if ( sumVal == 0 ) {

  println("true") // 此处为满足条件逻辑的最后一行内容,打印语句是没有返回值的

  } else {

   "false" //此处为不满足条件逻辑的最后一行内容,此处返回值为字符串String

  }

    因为Scala在编译期间无法知道程序的逻辑是满足或不满足,所以无法推断出result变量的具体类型,所以就设定为Any类型(所有类型的公共超类型)

    如果缺少一个判断,什么都没有返回,但是Scala认为任何表达式都会有值,对于空值,使用Unit类,叫做无用占位符,相当于java中的void, 打印结果为(),

while表达式

 while循环

Scala提供和Java一样的while和do循环,与If语句不同,While语句本身没有值,即整个While语句的结果是Unit类型的()。

注:因为while和do…while中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量 ,而变量需要声明在while循环的外部,那么就等同于循环的内部对外部的变量造成了影响, 也就违背了函数式编程的重要思想,所以不推荐使用。

while 循环的中断 

  Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数化编程,

  推荐使用函数式的风格解决break和contine的功能,而不是一个关键字。


for 表达式  

Scala 也为for 循环这一常见的控制结构提供了非常多的特性,这些for 循环的特性被称为for 推导式(for comprehension)或for 表达式(for expression)。

  1) 范围数据循环1:to左右两边为前闭后闭的访问

  2) 范围数据循环2:until左右两边为前闭后开的访问  

  for(i <- 1 until 3) {

   print(i + " ")

  }

println()

  3) 循环守卫:引入循环保护式(也称条件判断式,守卫)。保护式为true则进入循环体内部,为false则跳过,类似于continue 

  for(i <- 1 to 3 if i != 2) {

   print(i)

  }

  println()  

  4) 引入变量:

  for(i <- 1 to 3; j = 4 - i) {

  print(j + " ")

  }

  5) 嵌套循环:

  for(i <- 1 to 3; j <- 1 to 3) {

  print(i*j + " ")

  }  

  6) 循环返回值:(将遍历过程中处理的结果返回到一个新集合中,使用yield关键字)

  val for5 = for(i <- 1 to 10) yield i

  println(for5) 

  7) 使用花括号{}代替小括号()

注:{}()对于for表达式来说都可以。for 推导式有一个不成文的约定:当for 推导式仅包含单一表达式时使用原括号,当其包含多个表达式时使用大括号。值得注意的是,使用原括号时,早前版本的Scala 要求表达式之间必须使用分号。

Scala控制语句的更多相关文章

  1. Scala学习随笔——控制语句

    Scala只内置了为数不多的几种程序控制语句:if.while.for.try catch以及函数调用,这是因为从Scala诞生开始就包含了函数字面量,Scala内核没有定义过多的控制结构,而是可以通 ...

  2. scala流程控制语句以及方法和函数

    1.if else表达式 scala中没有三目运算符,因为根本不需要.scala中if else表达式是有返回值的,如果if或者else返回的类型不一样,就返回Any类型(所有类型的公共超类型). 例 ...

  3. Scala 学习之路(三)—— 流程控制语句

    一.条件表达式if Scala中的if/else语法结构与Java中的一样,唯一不同的是,Scala中的if表达式是有返回值的. object ScalaApp extends App { val x ...

  4. Scala 系列(三)—— 流程控制语句

    一.条件表达式if Scala 中的 if/else 语法结构与 Java 中的一样,唯一不同的是,Scala 中的 if 表达式是有返回值的. object ScalaApp extends App ...

  5. scala基础语法(变量,数据类型,函数)

    一:常量与变量 1.常量 2.两种变量定义方式(严格与不严格) 3.Float注意点 3.注意点 变量名后加上: 类型首字母是大写 4.占位符_ 但是需要制定类型 5.scala数据类型 6.其他类型 ...

  6. 机器学习的Spark与Scala开发简介

     一.机器学习常用开发软件:Spark.Scala 1. Spark简介: MLlib包含的库文件有: 分类 降维 回归 聚类 推荐系统 自然语言处理 在线学习 统计学习方法:偏向理论性,数理统计的方 ...

  7. 4. Scala程序流程控制

    4.1 程序流程控制说明 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句,顺序控制,粉质控制,循环控制 温馨提示:Scala语言中控制结构和Java语言中的 ...

  8. Scala(一) —— 基础

    一.输出 println("Hello World") 二.变量与常量 1.变量用var表示,常量使用val表示 2.变量类型声明 var variableName : DateT ...

  9. Scala详解

    1       快速入门... 4 1.1             分号... 4 1.2             常变量声明... 4 1.2.1         val常量... 4 1.2.2  ...

随机推荐

  1. 习题集1b: 额外练习 (可选)

    1.练习:4.样本特点 用来描述样本的数字叫做? □ 参数   (√)□ 统计量 □ 变量 □ 常数 2.练习:5.大一学生体重情况 Freidman 博士在一所大学任教,她记录了所在大学每位大一新生 ...

  2. SQLServer 2014 内存优化表

    内存优化表是 SQLServer 2014 的新功能,它是可以将表放在内存中,这会明显提升DML性能.关于内存优化表,更多可参考两位大侠的文章:SQL Server 2014新特性探秘(1)-内存数据 ...

  3. python3 request模块初使用

    import requests class Interface_Request: def __init__(self,url,mobilephone,pwd): '''login参数初始化''' se ...

  4. django——视图层

    1. 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...

  5. Hadoop错误之namenode宕机的数据恢复

    情景再现: 在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即 ...

  6. 【C语言程序】今天是祖国母亲的生日,特意编写一个小程序,为祖国母亲庆生~

    #include <stdio.h> #define N 80 int main(int argc, char *argv[]) { char a[N]; printf("Hel ...

  7. 转 MYSQL InnoDB Record, Gap, and Next-Key Locks

    http://dev.mysql.com/doc/refman/5.0/en/innodb-record-level-locks.html InnoDB has several types of re ...

  8. vue cli搭建项目

    1.首先电脑要在安装node环境下才能运行 2.全局安装webpack:npm install webpack -g 3.安装vue脚手架: npm install vue-cli -g 4.新建文件 ...

  9. python函数详解

    ''' 函数:是一段可以重复调用的代码,通过输入的参数,返回对应的结果 名字绑定的机制,把实际参数的值与形式参数的值绑定到一起 1.函数调用的时候,实际参数的值的顺序与形式参数的顺序一一对应 2.当在 ...

  10. JavaScript基础知识(Math的方法)

    Math的方法 Math : 对象数据类型 : Math: {} 是window下的一个键值对: 属性名叫Math,属性值是一个对象 var obj = {a:1}; console.log(obj. ...