引言:为什么选择Scala?
大家好,我是心海!
Scala(Scalable Language)是一门融合面向对象与函数式编程的现代语言。它像瑞士军刀一样灵活——既能编写简洁的脚本,又能构建复杂的分布式系统。想象你正在组装乐高积木:Scala提供标准积木块(面向对象),同时允许你自定义连接器(函数式特性),让创作随心所欲。
当然,如果你已经有了 python 或者 Java 的编程语言基础,那学起来会更加轻松!
目录
八、隐式转换(Implicit Conversions):让代码更灵活
一、变量:数据的容器
变量就像一个个贴着标签的盒子,我们可以把数据放进这些盒子里,并通过标签找到它们。在 Scala 中,我们有两种主要的变量类型:val 和 var
-
val:声明后不可变,推荐默认使用,如宇宙中的物理常数
-
var:可变,谨慎使用,如同随时可能修改的日程表
val name = "Alice" // 不可变,像刻在石碑上的名字
var age = 25 // 可变,像白板上的数字
// name = "Bob" // 编译错误!
age = 26 // 允许修改
类型推断: Scala 拥有强大的类型推断能力,很多时候你可以省略变量的类型声明,让编译器自动帮你推断。
val name = "Alice" // 编译器会自动推断 name 是 String 类型
var age = 30 // 编译器会自动推断 age 是 Int 类型
二、函数:执行特定任务的代码块
函数是组织代码的基本单元。它可以接收输入(参数),执行一系列操作,并返回输出(返回值)。
定义函数:
def add(a: Int, b: Int): Int = {
a + b
}
-
参数类型必须声明
-
返回值类型可省略(但推荐显式声明)
在 Scala 中,我们使用 def 关键字来定义函数。
def greet(name: String): String = {
s"Hello, $name!"
}
val greeting = greet("Bob")
println(greeting) // 输出 Hello, Bob!
代码解析:
def greet: 声明一个名为 greet 的函数。
(name: String): 定义一个名为 name 的参数,类型为 String。
: String: 指定函数的返回值类型为 String。
= { ... }: 函数体,包含要执行的代码。
s"Hello, $name!": 使用字符串插值(string interpolation)构建返回的字符串。s 前缀允许我们在字符串中使用 $变量名 的方式嵌入变量的值。
省略返回值类型: 如果函数体比较简单,Scala 也可以进行返回值类型推断,你可以省略 : String。
def add(a: Int, b: Int) = a + b
val sum = add(5, 3)
println(sum) // 输出 8
三、集合操作:数据处理利器
3.1 三大集合类型
Scala 提供了强大且易用的集合库,可以帮助我们高效地处理列表(List)、映射(Map)、集合(Set)等数据结构。
| 集合类型 | 特点 | 示例 |
|---|---|---|
| List | 有序可重复 | List(1,2,3,3)→ 1,2,3,3 |
| Set | 无序唯一 | Set(1,2,2,3) → 1,2,3 |
| Map | 键值对 | Map("a"->1,"b"->2) |
-
List(列表):有序的元素集合,允许重复。
val numbers: List<Int> = List(1, 2, 2, 3, 4) println(numbers.head) // 输出第一个元素:1 println(numbers.tail) // 输出除第一个元素外的列表:List(2, 2, 3, 4) println(numbers.length) // 输出列表的长度:5 -
Map(映射):存储键值对的集合,键是唯一的。
val ages: Map<String, Int> = Map("Alice" -> 30, "Bob" -> 25, "Charlie" -> 35) println(ages("Alice")) // 输出 Alice 的年龄:30 println(ages.get("David")) // 输出 Option(None),因为 "David" 不存在 println(ages.keys) // 输出所有键:Set(Alice, Bob, Charlie) println(ages.values) // 输出所有值:Iterable(30, 25, 35) -
Set(集合):不包

1433

被折叠的 条评论
为什么被折叠?



