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)
或者一般而言,给定一个字符串和一些可迭代的集合,遍历集合并为每个元素,逐步修改输入字符串.
干杯
一般的模式
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)