Scala - 以功能方式修改字符串

mmm*_*reg 5 functional-programming scala

我刚刚开始使用Scala,因此我可以用更实用的方式来做事.

只是想知道是否有更实用的方法来实现如下所示:

def expand(exp: String): String = {
  var result = exp
  for ((k,v) <- libMap) {result = result.replace(k, "(%s)".format(v))}
  result
}
Run Code Online (Sandbox Code Playgroud)

或者一般而言,给定一个字符串和一些可迭代的集合,遍历集合并为每个元素,逐步修改输入字符串.

干杯

sep*_*p2k 8

一般的模式

var result = init
for (foo <- bar) { result = f(result, foo)}
result
Run Code Online (Sandbox Code Playgroud)

可以在功能上表达为

bar.foldLeft(init)(f)
Run Code Online (Sandbox Code Playgroud)

所以对于你的情况这个becomas:

libMap.foldLeft(exp){ case(result, (k,v)) => result.replace(k, "(%s)".format(v))}
Run Code Online (Sandbox Code Playgroud)