2

機能的に書き直す方法を教えてくださいtoString

コードは問題ありませんが、誇りに思うことは何もありません。3つの一時変数が含まれています。

class Field(x: Int, y: Int) {
  val value = init(x,y)
  private def init(x: Int, y: Int) = List.fill(x,y)(new Cell)
  override def toString(): String = {
    val temp = new StringBuilder
    for(i <- value) {
      for(j <- i) {
        temp.append(j.toString())
      }
      temp.append("\n")
    }
    temp.mkString
  }
}

みんなありがとう!

4

1 に答える 1

5

これはどうですか(ma!1行を見てください):

override def toString() = value.map(_.mkString).mkString("\n")

時々それは私にScalaコードがどれほどコンパクトになり得るかを怖がらせます...


ところで、メソッドを再利用する必要がない場合は、次のようにinit()簡単に言うことができます。

val value = List.fill(x,y)(new Cell)
于 2012-06-27T20:22:57.507 に答える