基础语法
变量、控制流、字符串、作用域。
35 分钟
基础语法
Scala 3 语法更简洁:缩进块替代大括号(可选)、val/var 区分不可变与可变、控制结构多为表达式(有返回值)。对照 /roadmaps/scala「Syntax & Basics」节点,本课覆盖变量、控制流、字符串与作用域。
学习目标
- 掌握
val、var与类型推断 - 熟练使用
if/while/for表达式与 match 预览 - 理解字符串插值、多行字符串与作用域规则
核心概念
变量与类型
val name: String = "CodeRoadMap" // 不可变,推荐默认
var count = 0 // 可变,尽量少用
count += 1
val pi = 3.14159 // 类型推断为 Double
val items: List[Int] = List(1, 2, 3)
Scala 没有「基本类型默认值」的类字段语义;val 一旦绑定不可重新赋值(引用本身不可变,可变集合内容仍可改)。
控制流(表达式)
def grade(score: Int): String =
if score >= 90 then "A"
else if score >= 60 then "Pass"
else "Fail"
def sumUntil(n: Int): Int =
var acc = 0
var i = 1
while i <= n do
acc += i
i += 1
acc
def squares(n: Int): List[Int] =
(1 to n).map(i => i * i).toList
if 块有返回值;while/do-while 返回 Unit(类似 Java void)。
字符串与作用域
val user = "alice"
val msg = s"Hello, $user, next year: ${user.length + 1}"
val sql =
"""SELECT id, title
|FROM bookmarks
|WHERE user = ?
|""".stripMargin
def demo(): Unit =
val local = 42
println(local)
// println(local) // 编译错误:超出作用域
s"" 为插值字符串;""" 多行 raw 字符串;stripMargin 去掉行首 |。
方法与函数值
def add(a: Int, b: Int): Int = a + b
val multiply: (Int, Int) => Int = (a, b) => a * b
val double: Int => Int = _ * 2
println(add(2, 3))
println(List(1, 2, 3).map(double))
def 定义方法;(T) => U 是函数类型,可赋给 val。
与 Java 对照
| Scala | Java |
|---|---|
val / var | final / 普通变量 |
表达式 if | 语句 if-else |