Je voudrais faire ce qui suit plus efficacement:
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
Pour les chaînes, vous pouvez simplement écrire "abc" * 3
, qui fonctionne via StringOps
et utilise un StringBuffer
dans les coulisses.
Pour les personnages, je pense que votre solution est assez raisonnable, bien que char.toString * n
est sans doute plus clair. Avez-vous des raisons de soupçonner le List.fill
la version n'est pas assez efficace pour vos besoins? Vous pouvez écrire votre propre méthode qui utiliserait un StringBuffer
(similaire à *
on StringOps
), mais je suggérerais de viser d'abord la clarté, puis de ne m'inquiéter de l'efficacité que lorsque vous avez des preuves concrètes que c'est un problème dans votre programme.