我刚刚开始使用Scala,因此我可以用更实用的方式来做事。
只是想知道是否有更实用的方法来实现以下内容:
def expand(exp: String): String = {
var result = exp
for ((k,v) <- libMap) {result = result.replace(k, "(%s)".format(v))}
result
}
或者一般而言,给定一个字符串和一些可迭代的集合,遍历集合并为每个元素逐步修改输入字符串。
干杯
答案 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))}