是的,这是一个有趣的问题,但我想学习使用集合操作,如map,reduce和fold正确.
我这样做了:
scala> Range(0,3) map(_=>" ") reduceLeft(_+_) res15: java.lang.String = " "
解决方法
从技术上讲,以下是“收集操作”,我猜,因为
StringOps
在scala.collection.immutable包中:
scala> " " * 3 res1: String = " "
这里发生的是“”通过scala.Predef.augmentString
隐式转换为StringOps的实例,然后调用StringOps上的*方法.
更新:我的意思是这部分是一种玩笑,因为这显然不是你所说的“收集操作” – 这不是像map或reduce这样的高阶函数.我肯定在实际代码中使用我的版本(StringOps版本),但是如果你想使用高阶函数(出于教育原因,类似的问题等),我认为你的版本非常接近于惯用语.我个人一直使用,直到构建范围并减少而不是reduceLeft(因为连接是关联的) – 即,几乎是virtualeyes在他或她的答案中写的.