Scala基础
Scala 是一种多范式编程语言,它融合了面向对象编程和函数式编程的特性。它运行在Java 虚拟机上,并能够与现有的Java 代码兼容。Scala 的设计目标是提供一种简洁、优雅且类型安全的方式来表达常见的编程模式。
以下是Scala 的一些主要特点和优势:
- 多范式编程:Scala 既支持面向对象编程,也支持函数式编程。
- 与Java 兼容:Scala 代码可以编译成Java 字节码,并在JVM 上运行,可以调用Java 类库。
- 简洁的语法:Scala 具有比Java 更简洁的语法,可以更有效地表达代码逻辑。
- 类型安全:Scala 的静态类型系统可以帮助开发者编写更安全的代码。
- 可扩展性:Scala 适用于构建大型、高并发、分布式的系统。
- 函数式编程特性:Scala 支持高阶函数、闭包、模式匹配等函数式编程特性。
- 强大的工具支持:Scala 拥有IntelliJ IDEA 等强大的开发工具支持。
总而言之,Scala 是一门功能强大、灵活且具有良好可扩展性的编程语言,适用于各种类型的应用程序开发,特别是那些需要处理大量数据、高并发和分布式系统的场景。
下载安装
参考官网:https://www.scala-lang.org/
JDK兼容性
https://docs.scala-lang.org.cn/overviews/jdk-compatibility/overview.html
sbt
SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能.
https://docs.scala-lang.org/zh-cn/scala3/book/tools-sbt.html
兼容性
| JDK | sbt | mill |
|---|---|---|
| 21 (LTS) | 1.9.0 | 0.11.5 |
| 17 (LTS) | 1.6.0 | 0.7.0 |
| 11 (LTS) | 1.1.0 | 0.1.5 |
| 8 (LTS) | 1.0.0 | 0.1.0 |
Scala 3.x 系列支持 JDK 8,以及 11 及更高版本。
下载安装:
直接从Github下载二进制压缩包:https://github.com/sbt/sbt
镜像源设置
SBT 通常使用 Maven 中央仓库下载依赖。
修改 build.sbt 文件
在build.sbt文件中添加以下内容:
resolvers ++= Seq(
"Aliyun Maven" at "https://maven.aliyun.com/repository/public",
"Maven Central" at "https://repo1.maven.org/maven2/"
)
也可以通过修改 SBT 全局配置文件~/.sbt/repositories来设置镜像。创建或编辑 ~/.sbt/repositories 文件,添加以下内容:
[repositories]
local
Aliyun Maven: https://maven.aliyun.com/repository/public
Maven Central: https://repo1.maven.org/maven2/
常见镜像源
- 阿里云:
https://maven.aliyun.com/repository/public - 清华大学:
https://mirrors.tuna.tsinghua.edu.cn/git/maven/ - 华为云:
https://repo.huaweicloud.com/repository/maven/
某些包
忽略SSL
构建缓慢问题
创建 sbt 项目后,初始化项目很慢,最简单的项目都要几分钟左右。
如果想知道 sbt 构建时哪个操作比较耗时
参考:https://stackoverflow.com/questions/32588234/how-to-profile-the-time-spent-for-a-task-in-sbt
Scala REPL
Scala REPL是和JShell差不多的东西。一个交互式的环境,它允许用户逐行输入 Scala 代码,立即执行并获取结果。
Scala安装好后,直接命令行输入scala即可进入:
➜ scala
Welcome to Scala 2.13.16 (Java HotSpot(TM) 64-Bit Server VM, Java 17.0.7).
Type in expressions for evaluation. Or try :help.
scala> println("Hello World")
Hello World
scala> 1 + 2L
val res1: Long = 3

浙公网安备 33010602011771号