string - كرر بكفاءة حرف/سلسلة ن مرات في سكالا



scala char (1)

للسلاسل ، يمكنك فقط كتابة "abc" * 3 ، والذي يعمل عبر StringOps ويستخدم StringBuffer خلف الكواليس.

بالنسبة إلى الشخصيات ، أعتقد أن الحل الخاص بك معقول ، على الرغم من أن char.toString * n أكثر وضوحًا. هل لديك أي سبب للشك في أن إصدار List.fill غير فعال بما يكفي لاحتياجاتك؟ يمكنك كتابة طريقتك الخاصة التي ستستخدم StringBuffer (على غرار * على StringOps ) ، لكنني أقترح أن تهدف إلى الوضوح أولاً ثم القلق بشأن الكفاءة فقط عندما يكون لديك دليل ملموس على أن هذه مشكلة في برنامجك.

أود القيام بما يلي بشكل أكثر كفاءة:

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




string-concatenation