目前我正在尝试使用Scala,尝试适应函数式编程以及再次学习新的语言(距上一次已经有些时日)。
现在假设我有一个字符串列表,如果我想将它们合并成一个长字符串(例如 "scala", "is", "fun" => "scalaisfun"
),我认为一种方法是使用foldRight
并在相应元素上应用串联。另一种方式,诚然更简单的方法,是调用mkString
。
我在github上检查了一下,但实际上找不到相应函数的源代码(如有帮助,敬请赐教),因此我不确定这些函数是如何实现的。从我脑海中浮现的想法是,mkString
更加灵活,但感觉实现中可能会有foldRight
,这个有真相吗?
否则,Scaladocs提到mkString
对每个相应元素都调用toString
。考虑到它们已经是字符串,那么这在这种特殊情况下可能是一个缺点。mkString
和foldRight
两种方法的优缺点,包括性能、简洁/优雅等方面的评论,有何建议?