Scala字符串插值

Scala提供了一种灵活的字符串插值机制,从而可以在字符串中嵌入表达式。一个常见的字符串插值场景是字符串拼接:

1
2
val name = "Vincent"
println(s"Hello, $name"")

运行上面scala代码,得到的结果是控制台输出Hello, Vincent,$namename的值替换了。字符串双引号之前加s是Scala中用来表示字符串插值的语法,在字符串的双引号之前加上s,Scala解析器就会对字符串中嵌入的表达式求值,并对表达式的值进行toString操作,然后替换表达式。

$后面,我们可以接任何表达式。如果该表达式是一个单值操作,一般直接放在$后面,比如$name。如果表达式包含一些操作,可以用花括号括起来,如${6 * 7}

除了s,scala还提供了另外两个插值操作,一个是raw,一个是frawf的用法和s一样,只不过拓展了一些功能。使用raw进行插值时,不会进行字符串转义,比如:

1
println(raw"no\\\\escape!") // gets No\\\\escape!

而使用f进行插值时,能够支持printf类似的格式化操作,也就是支持java.util.Formatter里面语法,例如:

1
f${math.Pi}%.5f // gets: 3.14159

Scala尾递归

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×