Scala的基础语法(超详细版)

这篇具有很好参考价值的文章主要介绍了Scala的基础语法(超详细版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Scala的基础语法

1.声明值和变量

Scala有两种类型的变量:

  1. 关键字 var 声明的变量,值是可变的
  2. 关键字 val 声明的变量,也叫常量,值是不可变的
var myvar:String="love"     // 使用var声明变量myvar
val myval:Int=10            // 使用val变量声明myval

注意事项:

  1. Scala中的变量在声明时必须进行初始化。但使用var声明的变量可在初始化后再次对变量进行赋值,而使用val声明的常量的值不可被再次赋值。
  2. 声明变量时,可不给出变量的类型,因为在初始化的时候,Scala的类型推断机制能够根据变量初始化的值自动推断出来。

与上述声明变量myvar和myval等同的代码:

var myvar="love"       // 使用var声明变量myvar
val myval=10           // 使用val变量声明myval
  1. 使用关键字 var 或 val 声明变量时,后面紧跟的变量名称不能和Scala中保留字重名,而且变量可以以字母或下画线开头,且变量名是严格区分大小写的。

代码示范:
Scala的基础语法(超详细版)

2.数据类型

Scala中的所有制都属于某种类型,包括数值和函数
Scala的基础语法(超详细版)
Any是所有类型的超类型,也称为顶级类型,它包含2个直接子类:

  1. AnyVal:表示值类型,值类型描述的数据是一个不为空的值,而不是一个对象。它预定义了9种类型,分别是 Double、Float、Long、Int、Short、Btye、Unit、Char和Boolean。其中,Unit是一种不代表任何意义的值类型,它的作用类似Python中的 pass。
  2. AnyRef:表示引用类型。除值类型外,所有类型都继承自AnyRef。

在Scala数据类型层级结构的底部,还有2个数据类型,分别是 NothingNull ,具体介绍如下:

  1. Nothing所有类型的子类型,也称为底部类型。它常见的用途是发出终止信号,如抛出异常、退出程序或者无限循环。
  2. Null所有引用类型的子类型,它的主要用途是与其他JVM语言互操作,几乎不在Scala代码中使用。

3.算术和操作符重载

Scala中算术操作符(+、-、*、/、%)的作用和Python是一样的,位操作符(&、|、>>、<<)的作用也是一样的。特别强调的是Scala的这些操作符是方法。

具体示范代码如下:
Scala的基础语法(超详细版)
上述代码中,a.+(b) 中的符号 + 表示的是方法名。Scala中几乎可以用任何符号位Scala方法命名。

Scala与 java 和 python 有一个明显的不同之处是 Scala没有提供操作符++ 和 – ;如果想实现递增或者递减的效果,可以使用“ + =1 ”或者“ - =1 ”来实现

4.控制结构语句

在Scala中,控制结构语句包括条件分支语句循环语句

  1. 条件分支语句:if 语句、if…else 语句、if…else if…else 语句、if…else嵌套语句;
  2. 循环语句:for 循环、while 循环 和 do…while循环;

4.1条件分支语句

if 语句的语法格式如下:

if(布尔表达式){
	如果布尔表达式为true,则执行该语句块
}

if…else 语句的语法格式如下:

if(布尔表达式){
	如果布尔表达式为true,则执行该语句块
}else{
	如果布尔表达式为false,则执行该语句块
}

if…else if…else 语句的语法格式如下:

if(布尔表达式1){
	如果布尔表达式1为true,则执行该语句块
}else if(布尔表达式2){
	如果布尔表达式2为true,则执行该语句块
}else if(布尔表达式3){
	如果布尔表达式3为true,则执行该语句块
}else{
	如果以上条件都为false,则执行该语句块
}

if…else 嵌套语句的语法格式如下:

if(布尔表达式1){
	如果布尔表达式1为true,则执行该语句块
	if(布尔表达式2){
		如果布尔表达式2为true,则执行该语句块
		}
}else if(布尔表达式3){
	如果布尔表达式3为true,则执行该语句块
	else if(布尔表达式4){
		如果布尔表达式4为true,则执行该语句块
	}
}else{
	如果以上条件都为false,则执行该语句块
}

案例演示:判断一个变量是否等于 5,如果是 5,则打印出 “a = 5”,如果不是 5,则判断该变量是否为10,如果是 10,则打印出 “a = 10”,否则打印出“ 无法判断a的值 ”;示例代码如下:
Scala的基础语法(超详细版)

4.2循环语句

Scala中的for循环语句和Java、Python中的for循环语句在语法上有较大的区别。

for 循环语句的语法格式:

for(变量<-表达式/数组/集合){      //箭头为大于符号"<"和减号"-"组成
循环语句;
}

示例:循环0到9,每循环一次将该值打印输出;
在Scala语法中,可以使用" 0 to 9 "表示0到9的范围,闭区间即包含首尾数,示例代码如下:
Scala的基础语法(超详细版)
Scala在for循环语句中可以通过使用 if 判断语句过滤一些元素,多个过滤条件用分号分隔开。

例:输出 0 到 9 范围中大于5的偶数;示例代码如下:
Scala的基础语法(超详细版)
Scala中的while循环语句只要表达式为 true ,循环体就会重复执行

while循环语句的语法格式如下:

while(布尔表达式){
 循环语句;
}

例:假设有一个变量x=1,判断该变量是否小于10,如果是则打印输出,然后进行 +2 运算;示例代码如下:
Scala的基础语法(超详细版)
do…while循环语句的语法格式如下:

do{
循环语句;
}while(布尔表达式)

do…while循环语句与while语句主要区别是:do…while语句的循环语句至少执行一次。

例:假设一个变量y=10,先打印输出,然后进行 +1 运算,再判断该变量是否小于20,如果是则进行循环;示例代码如下:
Scala的基础语法(超详细版)

5.方法与函数

Scala的方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话说,在类中定义的函数既是方法
Scala中可以使用 def 语句和 val 语句定义函数,而定义方法只能使用 def 语句

5.1方法

Scala方法的定义格式如下:

def functionName([参数列表]):[return type]={
function body 
return[expr]
}

从上面代码可以看出,Scala的方法由多个部分组成:

  1. def:Scala的关键字,并且是固定不变的,一个方法的定义是由def关键字开始的;
  2. functionName:Scala方法的方法名
  3. ([参数列表]):[return type]:Scala方法的可选参数列表,参数列表中的每个参数都有一个名字,参数名后跟着冒号和参数类型
  4. function body:方法的主体
  5. return[expr]:Scala方法的返回类型,可以是任意合法的Scala数据类型,若无返回值,则返回类型为Unit。

例:定义一个方法add(),实现两个数相加求和;示例代码如下:
Scala的基础语法(超详细版)
Scala的方法调用格式如下:

functionName(参数列表)   //没有使用实例的对象调用方式
[instance.]functionName(参数列表)    //方法由实例对象来调用

接上例调用:
Scala的基础语法(超详细版)

5.2 函数

在Scala中,由于使用 def 语句定义以及调用函数的格式均与方法一样,然而,Scala函数与Scala方法还是有区别的,可以使用 val 语句定义函数的格式,并且函数必须要有参数列表,而方法可以没有参数列表。

Scala 函数的定义格式如下:

val functionName  = ([参数列表])=>function body

例:定义一个函数addInt,实现两个整数相加求和;示例代码如下:
Scala的基础语法(超详细版)
函数的调用跟方法一样:functionName(参数列表)

5.3 方法转换成函数

方法转换成函数的格式如下:

val 函数name = 方法name _

在上述的格式中,方法name后紧跟一个空格下划线,是为了告知编译器将方法name转换成函数,而不是调用这个方法。

例:定义一个方法m,实现将方法m转成函数 f ;示例代码如下:
Scala的基础语法(超详细版)
提示:Scala方法的返回值类型可以不写,编译器可以自动推断出来,但对于递归函数来说,必须要指定返回类型

本博客到此就结束嘞,有帮助或学到东西的话,给个点赞支持一下吧,制作不易,我是不吃泡面,不知会写BUG,关注我,持续更新Spark大数据分析的内容,有什么问题欢迎评论区留言指正噢,我们下章再见 ~

Scala的基础语法(超详细版)文章来源地址https://www.toymoban.com/news/detail-472967.html

到了这里,关于Scala的基础语法(超详细版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vue基础语法详细介绍】

    Vue.js使用声明式渲染、组件化、指令等一系列概念来构建前端应用,以下是一些Vue.js的基本语法和概念: Vue.js 使用了基于HTML的模板语法,允许你声明式地将 DOM 绑定到底层 Vue 实例的数据上。 当 Vue 实例被创建时,它将挂载点内的DOM与数据绑定通过一些指令与特殊的属性连接

    2024年02月01日
    浏览(27)
  • go相当详细的基础语法

    运行命令 go run xx.go 或者 go build xx.go + ./xx ​ 定义变量可分为:var+变量定义,变量 := 定义常量时没有类型限制,其可根据上下文自行进行定义 ​ if/else if 条件当中的语句不需要加括号,也可以在if当中添加变量的定义 for循环 go语言当中只有for循环,没有while循环 如果for循环当

    2024年02月04日
    浏览(26)
  • Scala高阶语法

    没有名字的函数就是匿名函数。 例如: 练习二:传递的函数有两个参数 代码示例: 偏函数是一个特质 ,用来专门处理某种数据类型! [注意可以同时处理多种数据类型] 注:该偏函数的功能是返回输入的 List 集合的第二个元素 代码示例: 上述代码会被 scala 编译器翻译成以下

    2024年02月09日
    浏览(25)
  • Scala基本语法

    对于scala的注释,简而言之就是一句话,和java的注释一模一样 基本语法 代码示例: 注意: •val 在编程的过程中我们大部分的操作是获取值或者是获取一个创建好的对象,然后操作对象中的属性,很少改变这个对象变量 •val 是线程安全的 , 在使用的时候效率更高 •优先使用

    2024年02月09日
    浏览(25)
  • Scala语法篇

    下表中列出的数据类型都是对象,可以直接对它们调用方法。 数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9

    2024年02月08日
    浏览(27)
  • SAP ABAP 基础语法超详细

    1.表声明 当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。 2.定义变量 v1 是变量名。 (l) 是变量的长度。 t 是数据类型。 d 是小数位。 ‘xxx’ 是缺省值。 如:data num(10) type p decimals 3 value ‘1.12’. 数据

    2024年02月15日
    浏览(47)
  • Scala语言入门以及基本语法

    scala在一种简洁的高级语言中结合了面向对象和函数式编程。Scala的静态类型有助于避免复杂应用程序中的错误,它的JVM和JavaScript运行时使您可以构建高性能系统,并轻松访问庞大的库生态系统。 几大特性 Scala运行在JVM上,因此Java和Scala实现完全无缝集成。 类型推理。 并发

    2024年02月01日
    浏览(32)
  • Python以及基础语法保姆级教程(超详细)

    Python 是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 1.1 Python创始人 Python的创始人为荷兰人吉多·范罗苏姆(Guido van Rossum) 1.2 Python发展及经过 Python语言诞生于20世纪90年代初是由 Guido van Rossum 在圣诞节期间开始

    2024年02月21日
    浏览(34)
  • MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇

    今天来分享一期MySQL的基本用法(增删改查 对库 对表 对值) 目录 MySQL的基础概念  SQL 语言的主要分类 DDL(数据定义语言) DML(数据操控语言) DQL(数据库查询语言) DCL(数据库控制语言) 基础语法 增 库的操作 表操作 列操作 值操作 删 删除库 删除表 删除值 改 修改表名 更新数

    2024年03月16日
    浏览(37)
  • 4.Python从入门到精通—Python 基础语法详细讲解-下

    Python中的输入输出和文件操作是编程中非常常见和重要的部分。下面我会详细讲解Python中的输入输出和文件操作。 Python中的输入输出通常使用input()和print()函数。 输入 input()函数用于从控制台获取用户输入的数据。它的基本用法如下: 其中,prompt是可选的字符串参数,用于向

    2024年03月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包