如果我有一个地图并希望通过迭代来构建一个字符串,有没有办法让最终字符串成为表达式的结果而不是定义一个变量并在循环中修改它?
而不是这个
val myMap = Map("1" -> "2", "3"->"4")
var s = ""
myMap foreach s += ...
Run Code Online (Sandbox Code Playgroud)
我宁愿它
var s = myMap something ...
Run Code Online (Sandbox Code Playgroud)
Dan*_*ral 18
我只是map和mkString.例如:
val s = (
Map("1" -> "2", "3"->"4")
map { case (key, value) => "Key: %s\nValue: %s" format (key, value) }
mkString ("", "\n", "\n")
)
Run Code Online (Sandbox Code Playgroud)
Kev*_*ght 13
至于丹尼尔的答案,但有一些优化和我自己的格式偏好:
val myMap = Map("1" -> "2", "3"->"4")
val s = myMap.view map {
case (key, value) => "Key: " + key + "\nValue: " + value
} mkString ("", "\n", "\n")
Run Code Online (Sandbox Code Playgroud)
优化:
view地图,我避免创建一个中间集合String.format你可以用折叠来做到这一点:
scala> myMap.foldLeft("") { (s: String, pair: (String, String)) =>
| s + pair._1 + pair._2
| }
res0: java.lang.String = 1234
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15867 次 |
| 最近记录: |