Scala 字符串插值器
Scala 提供了三种创新的字符串插值方法:s,f和raw,使用他们我们可以方便快捷的组合字符串。
s 字符串插值器
在任何字符串前加上s,就可以直接在串中使用变量了,在生成字符串的时候会隐式调用其toString方法。
class Complex(val real: Double, val imaginary: Double) {
override def toString: String = {
s"Complex(real=$real, imaginary=$imaginary)"
}
}
val complex = new Complex(23, -1.3)
println(s"$complex")
字符串插值器也可以处理任意的表达式:
println(s"1+1=${1 + 1}")
f 插值器
在任何字符串字面前加上f,就可以生成简单的格式化串,功能相似于其他语言中的printf函数。
类似于 Java 中的String.format
val height = 1.9d
val name = "James"
println(f"$name%s is $height%.2f meters tall") //James is 1.90 meters tall
raw 插值器
raw插值器可以保证其内的字符不被编码,如n不会被处理为回车
println(s"a\nb") // a回车b
println(raw"a\nb") // anb
高级用法
在 worksheet 中输入如下代码运行
id"string content"
发现编译器提示:Error:(1, 68) value id is not a member of StringContext
即:该格式会隐式调用 StringContext 的与前缀插值器同名的方法
所以我们自定义插值器只需要这样就可以了:
implicit class JsonHelper(val sc: StringContext) extends AnyVal {
def json(args: Any*): String = {
val strings = sc.parts.iterator
val expressions = args.iterator
var buf = new StringBuffer(strings.next)
while (strings.hasNext) {
buf append expressions.next
buf append strings.next
}
parseJson(buf)
}
}
结语
字符串插值器可以帮助我们快速格式化字符串,s会隐式调用其toString方法,f需要格式模板字符串,raw不会编码字符,我们只需要按需使用即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)