寒假学习1——Scala

Scala是一种现代的多范式编程语言,旨在通过简洁、优雅且类型安全的编程模型来表达常用的编程概念。它结合了面向对象和函数式编程的特点,使得开发人员能够利用两种范式的优势。123456789

在面向对象方面,Scala支持面向对象编程的所有基本概念,如类、对象、继承、封装和多态。它允许用户通过子类化和基于mixin的组合机制来扩展对象,这种机制可以作为多继承的一种替代方案。135

在函数式方面,Scala提供了匿名函数、高阶函数、模式匹配和柯里化等功能,这些特性使得Scala成为开发web服务等程序的理想选择。1

Scala还是一门静态类型的语言,配备了一个强大且表达力丰富的类型系统,支持泛型类、类型变注解、上下类型边界、复合类型、显式类型的自我引用和隐式参数等特性。这些特性结合在一起,为安全可重用的编程抽象和类型安全的扩展提供了强大的基础。1257

此外,Scala是运行在Java平台(Java虚拟机)上的,因此可以无缝地与现有的Java程序交互,并兼容现有的Java类库。Scala的源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上。457

Scala还提供了一种语言机制的独特组合方式,使得可以方便地以库的形式添加新的语言结构,这使得它成为一门可扩展的语言。17

总的来说,Scala是一门功能强大、灵活且易于使用的编程语言,适合于开发大型系统、服务器端应用、大数据应用,以及在浏览器中使用Scala.js等场景。

1.声明值和变量
Scala有两种类型的变量:

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

Scala中的变量在声明时必须进行初始化。但使用var声明的变量可在初始化后再次对变量进行赋值,而使用val声明的常量的值不可被再次赋值。
声明变量时,可不给出变量的类型,因为在初始化的时候,Scala的类型推断机制能够根据变量初始化的值自动推断出来。
与上述声明变量myvar和myval等同的代码:

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


2.数据类型
Scala中的所有制都属于某种类型,包括数值和函数。

Any是所有类型的超类型,也称为顶级类型,它包含2个直接子类:

AnyVal:表示值类型,值类型描述的数据是一个不为空的值,而不是一个对象。它预定义了9种类型,分别是 Double、Float、Long、Int、Short、Btye、Unit、Char和Boolean。其中,Unit是一种不代表任何意义的值类型,它的作用类似Python中的 pass。
AnyRef:表示引用类型。除值类型外,所有类型都继承自AnyRef。
在Scala数据类型层级结构的底部,还有2个数据类型,分别是 Nothing 和 Null ,具体介绍如下:

Nothing:所有类型的子类型,也称为底部类型。它常见的用途是发出终止信号,如抛出异常、退出程序或者无限循环。
Null:所有引用类型的子类型,它的主要用途是与其他JVM语言互操作,几乎不在Scala代码中使用。
3.算术和操作符重载
Scala中算术操作符(+、-、*、/、%)的作用和Python是一样的,位操作符(&、|、>>、<<)的作用也是一样的。特别强调的是Scala的这些操作符是方法。

具体示范代码如下:

上述代码中,a.+(b) 中的符号 + 表示的是方法名。Scala中几乎可以用任何符号位Scala方法命名。

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

具体操作可看(https://blog.csdn.net/weixin_51996831/article/details/123329304)

posted @   Joranger  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示