在Scala中有效地重复一次字符/字符串n次

Tim*_*imY 53 string scala concatenation string-concatenation char

我想更有效地做以下事情:

def repeatChar(char:Char, n: Int) = List.fill(n)(char).mkString
def repeatString(char:String, n: Int) = List.fill(n)(char).mkString

repeatChar('a',3)     // res0: String = aaa
repeatString("abc",3) // res0: String = abcabcabc
Run Code Online (Sandbox Code Playgroud)

Tra*_*own 106

对于字符串,你可以随便写"abc" * 3,它通过工作StringOps,并使用StringBuffer在幕后.

对于角色,我认为你的解决方案非常合理,尽管char.toString * n可以说更清晰.您是否有理由怀疑该List.fill版本的效率不足以满足您的需求?你可以编写自己的方法,使用a StringBuffer(类似于*on StringOps),但我建议首先要明确,然后只有当你有具体的证据表明这是你程序中的问题时才会担心效率.

  • 谢谢Travis.这更符合学术兴趣,正如您所建议的那样,尽可能提高清晰度,而不是提高绩效.我只想确保从一开始就采用最佳实践. (3认同)
  • @MoustafaMahmoud 为什么不尝试一下呢? (2认同)