Répéter efficacement un caractère / chaîne n fois dans Scala

Je voudrais faire les choses plus efficacement:

def repeatChar(char:Char, n: Int) = List.fill(n)(char).mkSsortingng def repeatSsortingng(char:Ssortingng, n: Int) = List.fill(n)(char).mkSsortingng repeatChar('a',3) // res0: Ssortingng = aaa repeatSsortingng("abc",3) // res0: Ssortingng = abcabcabc 

Pour les chaînes, vous pouvez simplement écrire "abc" * 3 , qui fonctionne via SsortingngOps et utilise un SsortingngBuffer en coulisse.

Pour les caractères, je pense que votre solution est assez raisonnable, bien que char.toSsortingng * n soit sans doute plus clair. Avez-vous des raisons de penser que la version List.fill n’est pas suffisamment efficace pour vos besoins? Vous pourriez écrire votre propre méthode qui utiliserait un SsortingngBuffer (similaire à * sur SsortingngOps ), mais je suggérerais de viser d’abord la clarté et ensuite de vous soucier de l’efficacité uniquement lorsque vous avez la preuve concrète que c’est un problème dans votre programme.

Je sais que c’est une vieille question, une autre solution serait ce que j’ai ci-dessous

 def repeatChar(char:Char, n: Int) : Ssortingng = { var result = "" for(_ <- 1 to n){ result += "" + char } result } 

résultat de REPL repeatChar ('a', 2) => res1: Ssortingng = aa