scala - 更好的一个类轮来生成 n 个空格

标签 scala

是的,这是一个有趣的问题,但我想学习如何正确使用集合操作,例如 map、reduce 和 fold。

我这样做了:

scala> Range(0,3) map(_=>" ") reduceLeft(_+_)
res15: java.lang.String = "   "

使用集合操作生成 n 个空间的更好的惯用方法是什么?

最佳答案

从技术上讲,以下是“收集操作”,我猜,因为 StringOps scala.collection.immutable包裹:

scala> " " * 3
res1: String = "   "

这里发生的事情是" "隐式转换为 StringOps 的实例来自 scala.Predef.augmentString ,然后是 *方法在 StringOps叫做。

更新:我的意思部分是作为一种玩笑,因为这显然不是您所说的“集合操作”的意思——它不是像 map 这样的高阶函数或 reduce .我肯定会在实际代码中使用我的版本(StringOps 版本),但是如果您想使用高阶函数(出于教育原因、类似问题等),我认为您的版本非常接近惯用语。我个人会使用 until用于构建范围和 reduce而不是 reduceLeft (因为串联是关联的)——也就是说,几乎是 virtualeyes 在他或她的答案中写的。

关于scala - 更好的一个类轮来生成 n 个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958222/

相关文章:

Scala:通用整数返回类型?

scala - 有没有办法将 Scala 反射中的两个等效类型转换为两个相等的类型?

scala - 确保 ScalaTest 不并行运行

scala - 在 udf 中使用 Try 匹配进行错误处理 - 并记录失败的行

Play 框架中的 Scalastyle "Public method must have explicit type"

来自 github 存储库的 Scala sbt 文件依赖项

parsing - 共享迭代器

scala - SparkSession.Builder 失败,错误代码 "A master URL must be set in your configuration": "spark.master" is set to "local"

scala - 了解 Scala Play Actions 和 Futures

scala - 如何为具有单个可为空成员的案例类编写 Play JSON 写入转换器