web-dev-qa-db-ja.com

Scalaで文字/文字列を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
50
TimY

文字列の場合は、"abc" * 3と書くだけで済みます。これは StringOps で動作し、舞台裏でStringBufferを使用します。

キャラクターについては、char.toString * nは間違いなく明確ですが、ソリューションはかなり合理的だと思います。 List.fillバージョンがニーズに対して十分に効率的でないと疑う理由はありますか? StringBufferStringOps*と同様)を使用する独自のメソッドを書くこともできますが、まず明確にすることを目指してから、効率性を心配することをお勧めします。それがプログラムの問題であることの具体的な証拠。

100
Travis Brown