CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Scala 语言入门/课时/基础语法
RawBlame
课时目录12 节

Scala 语言入门

  1. 01Scala 是什么
  2. 02基础语法
  3. 03OOP 与模式匹配
  4. 04集合与高阶函数
  5. 05函数式编程
  6. 06类型系统
  7. 07构建工具
  8. 08后端框架
  9. 09数据与 JSON
  10. 10测试
  11. 11并发与流
  12. 12综合练习

基础语法

变量、控制流、字符串、作用域。

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 对照

ScalaJava
val / varfinal / 普通变量
表达式 if语句 if-else
s"..." 插值
字符串拼接 / formatted
(Int, Int) => IntBiFunction<Integer,Integer,Integer>
缩进语法(可选 {})强制 {}

练习

  • 写 fizzBuzz(n: Int): List[String] 返回 1..n 的 FizzBuzz 列表
  • 用多行字符串格式化一段 SQL 或 JSON 模板
  • 对比 Java var 与 Scala var 的可变性语义

小结

Scala 语法偏表达式、默认不可变;字符串与函数值是一等公民。 下一课 OOP 与模式匹配。见 scala-essentials。

加载本节练习…
← 上一课Scala 是什么下一课 →OOP 与模式匹配