带有MAP数据结构的Scala字符串插值

时间:2017-09-08 11:52:29

标签: python scala

在Python中,字符串Interpolation可以通过多种方式完成其中一种方法是替换Python字典中的值,其中ab是地图中的键

str = "Value of a is %(a)s and b is %(b)s"

我在Scala中尝试过它

val data = Map(a->1, b->2)
val str = "Value of a is %(a)s and b is %(b)s"

有没有更好的方法在Scala中做同样的事情,因为我尝试的代码没有编译并给我结果?

2 个答案:

答案 0 :(得分:2)

我可以考虑采用以下方式而不使用追加。

val data = Map("a" -> 1, "b" -> 2)

// C/C++ way of applying variable values into String
println("Value of a is %ds and b is %ds".format(data("a"), data("b")))

//place variable inside ${} section of strings
println(s"Value of a is ${data("a")}s and b is ${data("b")}s")

答案 1 :(得分:-1)

要在Scala中使用基本字符串插值,请在字符串前面加上字母 s ,并在字符串中包含变量,每个变量名称前面都有 $ 字符。如果是表达式,请用${...}

括起来
val data = Map("a" -> 1, "b" -> 2)
println(s"${data.toList}".replace("List", ""))

结果

((a,1),(b,2))

上述方法将为您提供地图中所有条目的结果,而不是一个或几个。