0

私はこのクラスを持っています

class Tester(round: Int, x: Int, y: Int,sparringPartners:Array[RobotSpecification]) {
  def this(s:Array[RobotSpecification]) = {
    this(5, 800, 600, s)

  }

 def getRandomRobot(eng: RobocodeEngine): Array[RobotSpecification] = {//blabla}
}

そして、私はこのようなことを拡張したい

class EasyTester() extends Tester(getRandomRobot()){}

明らかにうまくいきません。

おそらく問題は些細なことですが、私は最近 Scala の OO 部分に近づいているので、このようなことをしたことはありません。

4

1 に答える 1

1

getRandomRobot論理的に属しているが、テスターの状態に依存しない場合、それをコンパニオンオブジェクトTesterのメソッドに変えることができます。

object Tester {
    def getRandomRobot(eng: RobocodeEngine): Array[RobotSpecification] = { ... }
}

1 つの方法は、のコンストラクターsparringPartnersに渡すだけです。EasyTester

class EasyTester(sparringPartners: Array[RobotSpecification]) extends Tester(sparringPartners) { ... }

import Tester._
val eng = ...
val easyTester = new EasyTester(getRandomRobot(eng))

それよりもインスタンス化を簡単にするために、インスタンス化するメソッドをEasyTester持つコンパニオン オブジェクトを使用できます。apply

import Tester._
object EasyTester {
    def apply(implicit eng: RobocodeEngine) = {
      new EasyTester(getRandomRobot(eng))
   }
}

implicit val eng: RobocodeEngine = ...
val easyTester = EasyTester
于 2013-03-30T19:15:49.263 に答える