文档章节

Scala--控制结构和函数

_咫尺_
 _咫尺_
发布于 2016/04/04 19:20
字数 928
阅读 52
收藏 1

条件表达式

if/else的表达式语法和java类似,只是需要注意的是:

1、if/else有返回值

2、scala代码结尾不需要“;”,除非一行要写多条语句,这个和Python类似。

上图中,在scala脚本中,打印出了if的返回值0。

块语句

在scala中“{}”包含的一系列表达式,叫做块语句,块中最后一个表达式的值就是块的值

while循环

while循环,和java的while和do循环相同,这里就不过多讲解了,实例如下图所示。

在"Repl"中写多行代码的时候,每写一行敲一下“回车键”然后它会自动去识别程序是否结束,直到你真正的写完代码,有时候不是很方便; 还有一种粘贴的方法,输入:paste然后就可以随意的写代码了,写完后Ctrl+D退出并运行代码,如上图所示。

for循环

for基础

语句结构:

for( i <- 表达式 )  #让变量i遍历<-右边的表达式的所有值,i具体执行取决于表达式
  循环体

for循环的变量之前没有val或var的指定,该变量的类型是集合的元素类型。循环变量的作用域一直持续到循环结束。 until:返回一个并不包含上线的区间。 scala中没有breakcontinue来退出循环,我们可以这样操作

  1. 使用Boolean的变量控制。
  2. 使用嵌套函数,可以从函数当中return。
  3. 使用Breaks对象的break方法。
  • eg:
breakable{
 for(...){
  if(...) break ;//#退出breakable块
} }

for进阶

  1. 在for循环“()”中可以使用多个生成器, 用“;”隔开;
  2. 并且每一个生成器都可以带一个**守卫**(if开头的Boolean表达式);
  3. 可以使用变量,如下图所示:

  • 如果for循环的循环体以yield开始,该循环就会构造出一个集合,每次迭代就生成一个集合的值。

函数

基本语法

语法如图:

(图来源于:Scala编程)

  1. 函数必须指定参数的类型
  2. 函数只要不是递归的就不需要指定返回值类型(因为无法推断出递归函数的类型)。
  3. 在函数中,不需要使用return。

函数参数

在函数中,我们可以使用默认参数。函数调用时:

1、如果没用给出所有参数,函数会使用默认参数(后面不够的参数使用默认值)。 2、也可以指定参数名,参数名不需要按顺序排列。 3、如果混合使用(未名参数和带名参数),只要未名参数排在前面即可。

4、变长参数,可以接受多个参数

def sum(args:Int*) = {
 var result = 0 ;
 for(arg <- args) result+=arg
  result
}

调用函数,sum(3,4,6,23,3),函数得到的是一个Seq类型的参数,注意调用函数是传入的参数不能是一个区间,eg: sum(2 to 9)是不可以的,应该为sum(2 to 9:_*);

过程

在scala中,如果函数没有返回值,那么该返回值类型我们可以用Unit来表示,这种没有返回值的函数我们称之为过程

上面省略了Unit,由于没有返回值也可以省略“=”号,下面语句相同:

本文转载自:http://blog.xiaoxiaomo.com/tags/Scala/

上一篇: Scala--数组
下一篇: Scala--基础入门
_咫尺_
粉丝 24
博文 11
码字总数 5503
作品 0
朝阳
程序员
私信 提问
Scala控制结构、函数式编程解析讲解

首先,Scala的基本控制结构包括顺序、条件、循环控制结构三种方式,这和其他的JVM语言是一致的,但是Scala存在一些高级控制结构类模式匹配。 主要有if、for、while三种控制结构方式: 一、i...

csdn5215的博客
2017/12/16
0
0
【scala】2.控制结构和函数

简介 在Java或者C++中,我们把表达式和语句看做两种不同的东西。表达式有值,而语句执行动作。 在Scala中,几乎所有构造出来的语法结构都是有值的。这个特性使得程序更加的精简,也更易读。 ...

Areya
02/22
10
0
scala函数式编程

 结构  学会使用Scala中主要的结构控制语句  数组  学会数组的声明与使用  映射  了解Scala中的映射的基础知识  包与引用 Scala控制结构  判断(if表达式)  循环(while/do...

泡海椒
2016/04/09
46
0
为Play初学者准备的Scala基础知识

1 前言 本文的主要目的是为了让Play Framework的初学者快速了解Scala语言,算是一篇Play Framework的入门前传吧。 使用PlayFramework可以极大的提高开发效率,但是需要注意,PlayJava入门很简...

joymufeng
2017/05/16
0
0
Scala学习(二)控制结构和函数

1.条件表达式 Scala的if/else语法结构和Java一样。不过,在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值。例如: 或者将表达式的值赋值给变量: 这与如下语句的效果一...

我爱春天的毛毛雨
2018/09/30
9
0

没有更多内容

加载失败,请刷新页面

加载更多

java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
35分钟前
5
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
36分钟前
8
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
今天
46
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
今天
7
0
go-micro 入门教程1.搭建 go-micro环境

微服务的本质是让专业的人做专业的事情,做出更好的东西。 golang具备高并发,静态编译等特性,在性能、安全等方面具备非常大的优势。go-micro是基于golang的微服务编程框架,go-micro操作简单...

非正式解决方案
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部