02Scala-函数定义、流程控制、异常处理入门实战

一 Scala 函数的定义

DT大数据梦工厂的微信公众号是DT_Spark,每天都会有大数据实战视频发布
Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6 

腾讯微云:http://url.cn/TnGbdC 

360云盘:http://yunpan.cn/cQ4c2UALDjSKy   访问密码 45e2 

按照以下格式定义scala函数.


def 函数名称(函数输入参数类型){

//函数的实现提

}

demo


object Test2 {

def main(args: Array[String]):Unit = {

println("HelloWorld")

}

}

a)可以看到输出语句的结尾没有以“;”结束,因为scala的设计者认为,多大一个字符对开发者来说是痛苦的。

他不太赞成在语句的结束写 “;” , 但你也可以写 “;” 结束

b)如果没有返回值内容,可以把 Unit去掉。如下所示。


object Test2 {

def main(args: Array[String]) = {

println("HelloWorld") ;

}

}

2)没有输入参数的函数


def doWhile() {

var line = ""

do {

line = readLine()

println("Read: " + line)

} while (line != "")

}

def main(args: Array[String]) = {

doWhile

}

默认会导入几个包,其中一个就有 Predef ,这里的包和java中的包是类似的,都是防止命名冲突,也就是说可以起相同的类名,但要放在不同的包下。

3)具有参数的函数定义


def looper(x: Long, y: Long): Long = {

var a = x

var b = y

while (a != 0) {

val temp = a

a = b % a

b = temp

}

b

}

def main(args: Array[String]) = {

println(looper(100, 298))

}

结果


2

4) 有逻辑运算的函数


def main(args: Array[String]) = {

var file = "scala.txt"

if (!args.isEmpty) {

file = args(0)

}

println(file);

}

这段代码的是定义一个变量 file等于 "scala.txt",如果程序有输入值,就复制给变量file,如果没有输入值,就是用默认的名称"scala.txt".

在写一段打印输出1到10集合里的元素代码。在for循环体内通过箭头( <- ) 给变量复制。


def main(args: Array[String]): Unit = {

for (i <- 1 to 10) {

println("Number is: " + i)

}

}

得到如下输出结果:


Number is: 1

Number is: 2

Number is: 3

Number is: 4

Number is: 5

Number is: 6

Number is: 7

Number is: 8

Number is: 9

Number is: 10

可以Scala逻辑型函数的定义还是比较简单的,要注意的一点就是,函数定以后,如果要调用就要放在Scala Object的main函数中,

因为main函数是Sclal Object的入口点,函数的运行都要从main开始。在从main函数调用定义的函数,这点看和C,C++和java都是相同的。

二异常处理

在scala中的异常处理和java应,也要对可能发生异常的代码进行 try,catch捕获异常和finaly最终处理异常。但和java不同的是,它是通过case匹配异常。

判断一个输入数是否是偶数,如果被2整除的余数不是0,就捕获异常。


def main(args: Array[String]): Unit = {

val n = 99

try {

val half = if (n % 2 == 0) n / 2

else throw new RuntimeException("N must be event")

} catch {

case e: Exception => println("The exception is:" + e.getMessage)

} finally {

}

}

运行代码,得到如下输出:因为99是奇数,当然会抛出抛出RuntimeException。


The exception is:N must be event

时间: 2024-10-12 09:11:41

02Scala-函数定义、流程控制、异常处理入门实战的相关文章

Scala深入浅出实战经典-----002Scala函数定义、流程控制、异常处理入门实战

002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 原因是集成开发环境自带的版本为2.11.0 变量 常量(不可变)声明 val 变量声明 var 无参函数的调用也无需加括号() 定义有参有返回值的函数 def 函数名称(参数名称:参数类型...):返回值类型={ 函数体 } 老师代码 注意最后一个是b是本函数的返回值 默认最后一行为返回值 流程控

Scala深入浅出实战经典-----002-Scala函数定义、流程控制、异常处理入门实战

002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 原因是集成开发环境自带的版本为2.11.0 变量 常量(不可变)声明 val 变量声明 var 无参函数的调用也无需加括号() 定义有参有返回值的函数 def 函数名称(参数名称:参数类型...):返回值类型={ 函数体 } 老师代码 注意最后一个是b是本函数的返回值 默认最后一行为返回值 流程控

002-Scala函数定义、流程控制、异常处理入门实战

002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 原因是集成开发环境自带的版本为2.11.0 变量 常量(不可变)声明 val 变量声明 var 无参函数的调用也无需加括号() 定义有参有返回值的函数 def 函数名称(参数名称:参数类型...):返回值类型={ 函数体 } 老师代码 注意最后一个是b是本函数的返回值 默认最后一行为返回值 流程控

C语言基础之函数和流程控制

函数和流程控制也是每个编程语言的基本概念,函数是划分模块的最小单位,良好的函数规划能直接提升软件的质量,C语言的流程控制主要由以下几个语句组成,条件分支语句.选择语句.循环语句.goto语句.return语句等. 函数的定义 一个函数包含返回值.函数名和参数列表,如下定义了一个返回值为 int 函数名为show拥有一个int类型参数的函数 int show(int param) {     printf("这是一个名为show的函数");     return 0; } 再来定义个没有

视图,触发器,事务,存储过程,函数与流程控制,索引

一.视图 1.什么是视图 虚拟表:在硬盘中没有的,通过查询在内存中拼接的表 视图:通过查询得到一张虚拟表,保存下来,下次可直接使用 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 4.删除视图 drop view teacher2course; 5.强调

mysql存储过程、存储函数及流程控制

存储过程 一.基本语法 create procedure sp_name([proc_parameter[,...]]) [characteristic...]routine_body begin end sp_name 表示存储过程的名字 proc_parameter 存储过程参数例表[IN OUT INOUT]三个部分组成 其中IN 表示传进来的参数 其中OUT 表示传出去的参数 其中INOUT 表示传进来但最终传回的参数 routine_body 参数是SQL代码的内容(类似于触发器的fo

02Scala学习-Scala函数定义、流程控制、异常处理入门实战

一 Scala 函数的定义 按照以下格式定义scala函数. def 函数名称(函数输入参数类型){ //函数的实现提 } 1) 第一个简单的例子 HelloWorld object Test2 { def main(args: Array[String]):Unit = { println("HelloWorld") } } a)可以看到输出语句的结尾没有以“;”结束,因为scala的设计者认为,多大一个字符对开发者来说是痛苦的. 他不太赞成在语句的结束写 “;” , 但你也可以写 

Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)

一. 视图 二. 触发器 三. 事务 四. 存储过程 五. 函数 六. 流程控制 一 .视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦

四十二、视图、触发器、事务、储存过程、函数、流程控制和索引等知识的应用

一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么用视图 当反复用到两张表的连接操作时,可以将连成的表当做视图保存下来,下次直接使用 3.怎么用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 删除视图:drop view teacher2course 4.注意: 在硬盘中,视图只