在 Scala 中有效地重复 character/string n 次
Efficiently repeat a character/string n times in Scala
我想更有效地执行以下操作:
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
对于字符串,您可以只写 "abc" * 3
,它通过 StringOps
工作并在幕后使用 StringBuffer
。
对于字符,我认为您的解决方案非常合理,尽管 char.toString * n
可以说更清晰。您是否有任何理由怀疑 List.fill
版本的效率不足以满足您的需求?您可以编写自己的方法,该方法将使用 StringBuffer
(类似于 StringOps
上的 *
),但我建议首先以清晰为目标,然后仅在有具体证据时才担心效率那是你程序中的一个问题。
你可以简单地定义:
def repeatChar(char:Char, n: Int) = char.toString() * n
def repeatString(char:String, n: Int) = char * n
我想更有效地执行以下操作:
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
对于字符串,您可以只写 "abc" * 3
,它通过 StringOps
工作并在幕后使用 StringBuffer
。
对于字符,我认为您的解决方案非常合理,尽管 char.toString * n
可以说更清晰。您是否有任何理由怀疑 List.fill
版本的效率不足以满足您的需求?您可以编写自己的方法,该方法将使用 StringBuffer
(类似于 StringOps
上的 *
),但我建议首先以清晰为目标,然后仅在有具体证据时才担心效率那是你程序中的一个问题。
你可以简单地定义:
def repeatChar(char:Char, n: Int) = char.toString() * n
def repeatString(char:String, n: Int) = char * n