Подтвердить что ты не робот

Эффективно повторите символ/строку n раз в 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
4b9b3361

Ответ 1

Для строк вы можете просто написать "abc" * 3, который работает через StringOps и использует StringBuffer за кулисами.

Для персонажей я думаю, что ваше решение довольно разумно, хотя char.toString * n, возможно, понятнее. У вас есть основания подозревать, что версия List.fill недостаточно эффективна для ваших нужд? Вы можете написать свой собственный метод, который будет использовать StringBuffer (аналогично * on StringOps), но я бы предложил сначала направить ясность, а затем беспокоиться об эффективности только тогда, когда у вас есть конкретные доказательства того, что эта проблема в вашем программа.