0Pricing
Scala for Backend Engineering & Functional Programming · 课时

字符串插值

s、f 与 raw

字符串插值 是 CoddyKit 上的免费 Scala for Backend Engineering & Functional Programming 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Scala for Backend Engineering & Functional Programming 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Scala for Backend Engineering & Functional Programming 课程共包含 4 节课。

什么是字符串插值

字符串插值允许您将值直接嵌入字符串字面量中,而不必使用 + 进行连接。

您可以在字符串前加上 s、f 或 raw 等字母,然后使用 $ 插入值。

s 插值器

s 插值器会将变量的值插入到您写下 $name 的位置。

这是最常用的插值器,可以替代繁琐的字符串连接。

object Main {
  def main(args: Array[String]): Unit = {
    val name = "Ada"
    println(s"Hello, $name!")
  }
}

使用花括号的表达式

对于简单变量以外的内容,请将表达式包裹在 ${ ... } 中。

花括号会告诉插值器表达式的起始和结束位置。

object Main {
  def main(args: Array[String]): Unit = {
    val a = 4
    val b = 6
    println(s"Sum is ${a + b}")
  }
}

在其中调用方法

您也可以在 ${ ... } 中调用方法。任何有效的表达式都可以使用。

object Main {
  def main(args: Array[String]): Unit = {
    val word = "scala"
    println(s"Upper: ${word.toUpperCase}")
  }
}

f 插值器

f 插值器支持 printf 风格的格式化。在表达式后指定格式,例如用 %.2f 保留两位小数。

它非常适合处理金额、百分比以及对齐的输出。

object Main {
  def main(args: Array[String]): Unit = {
    val price = 9.5
    println(f"Price: $$$price%.2f")
  }
}

格式化整数

f 插值器也可以格式化整数,例如使用 %d 表示十进制整数,或使用 %05d 在前面补零。

object Main {
  def main(args: Array[String]): Unit = {
    val id = 42
    println(f"ID: $id%05d")
  }
}

raw 插值器

raw 插值器的工作方式类似于 s,但不会处理转义序列。

因此,\n 会保持为反斜杠和 n 这两个字符,而不会变成换行符。

object Main {
  def main(args: Array[String]): Unit = {
    println(raw"line1\nline2")
  }
}

比较 s 和 raw

使用 s 时,转义序列 \n 会变成真正的换行符;使用 raw 时,它会保持字面形式。

当路径、正则表达式模式或其他内容中的反斜杠需要保留时,请使用 raw。

object Main {
  def main(args: Array[String]): Unit = {
    println(s"a\nb")
    println(raw"a\nb")
  }
}

多行插值

插值也适用于三引号字符串,这类字符串可以跨越多行。

这非常适合构建具有模板结构且易于阅读的输出。

object Main {
  def main(args: Array[String]): Unit = {
    val user = "Grace"
    val score = 95
    println(s"""User: $user
Score: $score""")
  }
}

转义美元符号

要在插值字符串中输出字面量美元符号,请写 $$。

这样可以避免插值器将其误认为变量的起始位置。

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 20
    println(s"Cost: $$$amount")
  }
}

综合运用

在一条插值消息中结合普通变量、花括号中的表达式以及方法调用。

object Main {
  def main(args: Array[String]): Unit = {
    val item = "book"
    val qty = 3
    val each = 12.0
    println(s"$qty ${item}s cost ${qty * each}")
  }
}

快速检查

测试您对插值器的了解。

回顾

您已经学会了 Scala 的三种主要字符串插值器:

  • s 可以插入变量和 ${expr} 表达式
  • f 支持 printf 风格的格式化,例如 %.2f 和 %05d
  • raw 会将转义序列保留为字面形式
  • 使用 $$ 输出字面量美元符号
  • 插值同样适用于三引号多行字符串

常见问题解答

「字符串插值」课时是免费的吗?

是的 — 「字符串插值」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Scala for Backend Engineering & Functional Programming 课程的其余内容,请升级到 CoddyKit PRO。 Scala for Backend Engineering & Functional Programming 课程共包含 4 节课。

「字符串插值」这节课中我会学到什么?

s、f 与 raw 你通过在浏览器中直接运行的动手代码来练习 Scala for Backend Engineering & Functional Programming,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Scala for Backend Engineering & Functional Programming 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Scala for Backend Engineering & Functional Programming 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「字符串插值」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Scala for Backend Engineering & Functional Programming 课中编写并运行代码吗?

能。每节 Scala for Backend Engineering & Functional Programming 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 REPL
  2. val、var 与类型
  3. 表达式优于语句
  4. 字符串插值
← 返回 Scala for Backend Engineering & Functional Programming