Scala语言基础

本文详细介绍了Scala语言的基础知识,包括变量、流程控制、集合和异常处理。实验旨在帮助学习者掌握Scala的基本语法、函数定义与参数传递、常用集合数据结构以及异常处理机制。通过Scala Shell实践,学习者可以深入理解Scala的特性和使用方式。
摘要由CSDN通过智能技术生成

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计13571字,阅读大概需要20分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
⏰个人网站:https://jerry-jy.co/

❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我

1. 实验室名称:

大数据实验教学系统

2. 实验项目名称:

Scala语言基础

3. 实验学时:

4. 实验原理:

1、Scala 变量

变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。
  基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。
  在学习如何声明变量与常量之前,我们先来了解一些变量与常量。
• 一、变量:在程序运行过程中其值可能发生改变的量叫做变量。如:时间,年龄。
• 二、常量 在程序运行过程中其值不会发生变化的量叫做常量。如:数值 3,字符’A’。

2、Scala流程控制

Scala IF…ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
  可以通过下图来简单了解条件语句的执行过程:

在这里插入图片描述

有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了更为复杂执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:
在这里插入图片描述

3、Scala集合

Scala提供了一套很好的集合实现,提供了一些集合类型的抽象。
  Scala 集合分为可变的和不可变的集合。
  可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。
  而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。

4、Scala异常处理

Scala 的异常处理和其它语言比如 Java 类似。
  Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。

5. 实验目的:

掌握Scala基本语法(变量、表达式、流程控制)
  掌握Scala函数定义和参数传递(位置参数、默认参数、名称参数等)
  掌握Scala常用集合数据结构(数组、列表、元组、Map等)
  掌握Scala异常处理

6. 实验内容:

1、学会使用Scala基本语法,包含变量、表达式、流程控制等。
  2、学会使用Scala定义函数定义和传递参数,包括位置参数、默认参数、名称参数等。
  3、学会使用Scala常用集合数据结构,包括数组、列表、元组、Map等。
  4、学会使用Scala进行异常处理。

7. 实验器材(设备、虚拟机名称):

硬件:x86_64 ubuntu 16.04服务器
  软件:JDK 1.8,Scala-2.11.x

8. 实验步骤:

8.1 启动Scala Shell

在终端中,执行以下命令,启动scala shell:

1.	$ scala

8.2 Scala基本语法

1、变量。
  在 Scala 中,使用关键词 “var” 声明变量,使用关键词 “val” 声明常量。
  在paste模式下,声明变量并修改变量:

1.	var myVar : String = "Foo"
2.	myVar = "New Foo"

按下Ctrl+D,执行以上代码。输出结果如下:

myVar: String = New Foo
myVar: String = New Foo

在paste模式下,声明常量并修改常量:

1.	val myVal : String = "Smart"
2.	myVal = "New Smart"

按下Ctrl+D,执行以上代码。输出结果如下:

:12: error: reassignment to val
myVal = “New Smart”
    ^

在上面的代码中定义了常量 myVal,它是不能修改的。如果程序尝试修改常量 myVal 的值,程序将会在编译时报错。
  使用lazy关键字可实现惰性求值特性,这允许用户延迟任何表达式的执行。当使用lazy关键字声明表达式时,它只会在显式调用时执行:

1.	val x = 3
2.	val y = 5
3.	lazy val sum = y - x
4.	println(sum)

按下Ctrl+D,执行以上代码。输出结果如下:

2
x: Int = 3
y: Int = 5
sum: Int = <lazy>

对于lazy变量,只有在调用它时才计算它。需要注意的是,惰性计算特性只能在val中使用。
  2、变量数据类型推断
  在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。
  所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。

1.	var myVar = 10;
2.	val myVal = "Hello, Scala!";

按下Ctrl+D,执行以上代码。输出结果如下:

myVar: Int = 10
myVar: String = Hello, Scala!

以上代码中,变量myVar会被推断为 Int 类型,myVal 会被推断为 String 类型。
  3、Scala 多个变量声明。
  Scala 支持多个变量的声明:

1.	val xmax, ymax = 100           // 变量xmax, ymax都赋值为100

按下Ctrl+D,执行以上代码。输出结果如下:

xmax: Int = 100
ymax: Int = 100

4、Scala表达式。
  在Scala中, 一切皆可视为表达式:
  Scala 中还可以使用多行表达式,使用花括号{} 包含。 多行表达式的最后一行语句执行的结果即为整个多行表达式的结果。例如,在paste模式下,键入以下代码:

1.	var diff_salary = {
    
2.	    var salary_PHP = 15000 
3.	    var salary_SCALA = 25000
4.	    salary_SCALA - salary_PHP
5.	}

按下Ctrl+D,执行以上代码。输出结果如下:

diff_salary: Int = 10000

5、Scala流程控制。
• if语句。
  if语句语句由布尔表达式及之后的语句块组成。
  如果布尔表达式为 true 则执行大括号内的语句块,否则跳过大括号内的语句块,执行大括号之后的语句块。
  在paste模式下,键入以下内容:

1.	var x = 10;
2.	
3.	if( x < 20 ){
   
4.	   println("x < 20");
5.	}

按下Ctrl+D,执行以上代码。输出结果如下:

x < 20
x: Int = 10

• if…else 语句。
  if 语句后可以紧跟 else 语句,else 内的语句块可以在布尔表达式为 false 的时候执行。
  在paste模式下,键入以下内容:

1.	var x = 30;
2.	
3.	if( x < 20 ){
   
4.	   println("x 小于 20");
5.	}else{
   
6.	   println("x 大于 20");
7.	}

按下Ctrl+D,执行以上代码。输出结果如下:

x 大于 20
x: Int = 30

• if…else if…else 语句。
  if 语句后可以紧跟 else if…else 语句,在多个条件判断语句的情况下很有用。
  在paste模式下,键入以下内容:

1.	var x = 30;
2.	
3.	if( x == 10 ){
   
4.	     println("X 的值为 10");
5.	}else if( x == 20 ){
   
6.	     println("X 的值为 20");
7.	}else if( x == 30 ){
   
8.	     println("X 的值为 30");
9.	}else{
   
10.	     println("无法判断 X 的值");
11.	}

按下Ctrl+D,执行以上代码。输出结果如下:
X 的值为 30

x: Int = 30

• if…else 嵌套语句。
  if…else 嵌套语句可以实现在 if 语句内嵌入一个或多个 if 语句。
  在paste模式下,键入以下内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂开发的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值