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

时间:2011-03-27 03:45:52

标签: scala functional-programming

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

只是想知道是否有更实用的方法来实现以下内容:

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

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

干杯

1 个答案:

答案 0 :(得分:8)

通常是模式

var result = init
for (foo <- bar) { result = f(result, foo)}
result

可以在功能上表达为

bar.foldLeft(init)(f)

所以对你的情况来说这是一个小丑:

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